3D✨ Premium

Shadow Perspective

Une carte indigo de 150 × 100 px posée au-dessus de son ombre au sol, une ellipse floue écrasée à plat ; au survol, au toucher ou au clavier, la carte monte de 10 px tandis que l'ombre reste au sol, pâlit de moitié et s'étale (flou de 10 à 15 px) : l'indice d'un objet qu'on soulève d'une table, rien d'autre ne bouge. CSS seul, sans JavaScript.

CSS3DShadow

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. 3D comprend 50 effets, dont 8 gratuits. Découvrir la catégorie →

3 exemples d'usage

Le téléphone reconditionné se soulève de la table — fiche produit d'un atelier de réparation — Shadow Perspective exemple 1

① Le téléphone reconditionné se soulève de la table — fiche produit d'un atelier de réparation

QuandUn smartphone dessiné à plat, écran sombre (« Testé », « Grade A », « batterie 92 % »), posé au-dessus de son ombre sur l'établi ; il se soulève comme quand on le prend en main, à côté du descriptif et du prix.
PourquoiSeule l'ombre qui reste au sol et s'étale dit « objet réel posé là » ; une inclinaison 3D comme Perspective Tilt (fx-0003) ferait carte, pas objet.
RéglagesRacine sans fond sur un décor clair d'établi ; objet agrandi en téléphone de 118 × 224 px (coins de 22 px, cadre de 4 px) ; ombre brune plus marquée (rgba(40, 30, 20, .6)) ; la scène soulève le téléphone en boucle et cède la place à la souris.
Le pot de miel qu'on prend sur l'étagère — boutique en ligne d'un apiculteur — Shadow Perspective exemple 2

② Le pot de miel qu'on prend sur l'étagère — boutique en ligne d'un apiculteur

QuandTrois pots (châtaignier, acacia, toutes fleurs) côte à côte sur une étagère en bois ; celui qu'on survole se soulève et affiche son prix au-dessus du couvercle.
PourquoiLe soulèvement avec une ombre qui reste sur la planche reprend le geste de prendre un produit en rayon, sans zoom ni cadre de sélection.
RéglagesUne copie de l'effet par pot ; pots de 96 × 112 px aux couleurs du miel, couvercle dessiné par ::before (libre dans le code vendu), étiquette crème ; ombre ambrée rgba(90, 55, 10, .55) ; prix affiché avec la levée. La scène soulève les pots l'un après l'autre.
Le bol en grès qui décolle de la table — boutique d'une potière — Shadow Perspective exemple 3

③ Le bol en grès qui décolle de la table — boutique d'une potière

QuandUn bol vu de face, émail bleu « nuit de Bretagne », posé sur une table claire à côté de sa description et de son prix ; il se soulève et l'ombre s'étale.
PourquoiSur une table claire, l'ombre douce qui s'élargit suffit à donner du poids et du volume à un objet en céramique, sans photo.
RéglagesObjet redessiné en bol de 200 × 96 px (coins inférieurs arrondis à 100 px, bord en ::before) ; ombre réduite à 70 % de la largeur, brune rgba(50, 40, 30, .5) ; fond crème.

Comment ça marche

La racine .fx-0020-root (fond #0a0a0f, 300 px de haut au minimum) centre un cadre .demo-3d de 280 × 200 px, puis .shadow-perspective-container, dont les 40 px de marge intérieure laissent la place à la levée et à l'ombre. L'objet est .shadow-perspective : 150 × 100 px, dégradé #6366f1 → #8b5cf6, coins de 0,75 rem, texte gras centré, tabindex="0", transition de 0,3 s sur sa transformation.

L'ombre est son pseudo-élément ::after : une ellipse noire à 30 % (rgba(0, 0, 0, .3), border-radius: 50%), large de 80 % de la carte, haute de 20 px, posée 20 px sous elle, floutée à 10 px et couchée par rotateX(80deg) — sans perspective au-dessus, cette rotation revient à l'écraser à 17 % de sa hauteur (cos 80°), soit environ 3,5 px avant le flou : une ombre de contact, plate. Au survol (ou :focus-visible), la carte prend translateY(-10px) et l'ombre passe à bottom: -30px, 50 % d'opacité et 15 px de flou, en 0,3 s. La carte monte de 10 px et l'ancrage de l'ombre recule de 10 px sous elle : à l'écran, l'ombre ne bouge pas, elle reste au sol, s'éclaircit et s'élargit. Mesuré : 2,4 % des pixels changent au survol, à l'identique dans Chromium 151, Firefox 153 et WebKit 26.5.

L'ombre est noire à 30 % : sur le fond sombre d'origine elle se voit à peine, et c'est la levée de la carte qui porte l'effet. Elle se lit vraiment sur un fond clair ou moyen — table, étagère, fiche produit —, comme dans les scènes ci-dessus. Le flou porte sur une ellipse déjà écrasée : il donne un bord doux sans épaissir l'ombre, ce qu'une box-shadow qui grandit ne sait pas faire (elle entoure toute la carte, pas seulement le dessous).

Accessibilité

  • Mouvement réduit : sous prefers-reduced-motion: reduce, un bloc limité à .fx-0020-root retire les transitions et la levée : la carte reste posée, l'ombre s'éclaircit et s'étale d'un coup, et un liseré violet de 3 px (rgba(167, 139, 250, .6)) marque le survol et le focus, ce qui le rend visible même sur le fond sombre. Mesuré dans Chromium et Firefox : transformation inchangée, liseré présent au survol.
  • Clavier : la carte a tabindex="0" et le focus donne la même levée que le survol, plus un liseré #c4b5fd de 2 px (10,7:1 sur le fond). Si la carte mène à une page, remplacez la div par un lien <a class="shadow-perspective" href="…"> : rien d'autre ne change.
  • Contraste : texte blanc gras à 4,47:1 sur l'indigo #6366f1 et 4,2:1 sur le violet #8b5cf6, sous le seuil de 4,5:1 pour du texte de 16 px : foncez le dégradé si la carte porte un texte qui compte.
  • Toucher : au doigt, la carte touchée se soulève (mesuré en émulation tactile Chromium et dans Firefox) et reste levée jusqu'au toucher suivant.

Compatibilité navigateur

CSS seul (transform, filter: blur() sur un pseudo-élément, :focus-visible), aucune dépendance. Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : même rendu au repos et au survol (moins de 0,2 % d'écart), même mouvement réduit, 0 erreur. Pas de plans 3D empilés : la rotation de l'ombre est un simple écrasement, rendu à l'identique par WebKit.

Chrome 86+✓ Complet
Firefox 85+✓ Complet
Safari 15.4+✓ Complet (rendu mesuré dans WebKit 26 ; non vérifié sur un vrai Safari)
Edge 86+✓ Complet
Mobile iOS✓ Survol au doigt non vérifié sur un vrai iPhone
Android Chrome✓ Complet

Sans filter, l'ombre devient une ellipse nette et sombre de 3,5 px : l'effet reste lisible, en plus dur. Sans :focus-visible, le focus clavier n'a que l'anneau du navigateur.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0020-root">
  <div class="demo-3d">
    <div class="shadow-perspective-container">   <!-- 40 px de marge pour la levée et l'ombre -->
      <div class="shadow-perspective" tabindex="0">Hover Me</div>   <!-- ::after = ombre au sol -->
    </div>
  </div>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
Hauteur de levée (CSS — translateY(-10px) du survol) 10 px Pour que l'ombre reste au sol, reculez son ancrage d'autant : levée de 16 px, bottom: -36px au survol.
Ombre au repos (CSS — ::after : couleur, bottom, largeur, filter) rgba(0, 0, 0, .3) ; 20 px sous l'objet ; 80 % ; flou de 10 px Sur fond clair, une teinte chaude (brun à 40-60 %) fait plus naturel que le noir. La largeur suit la base de l'objet : 70 % pour un bol, 80 % pour une carte.
Ombre levée (CSS — ::after du survol : bottom, opacity, filter) 30 px ; 0,5 ; flou de 15 px Plus l'objet monte, plus l'ombre doit pâlir et s'étaler : à 20 px de levée, essayez 0,35 et 20 px de flou.
Écrasement de l'ombre (CSS — rotateX(80deg)) 80° 70° donne une ombre plus épaisse (une table vue de plus haut) ; 85° une ligne presque plate.
Objet (CSS — taille, fond, coins de .shadow-perspective) 150 × 100 px, #6366f1 → #8b5cf6, 0,75 rem L'effet tient sur n'importe quelle forme : les scènes en font un téléphone, un pot et un bol. Le pseudo-élément ::before reste libre pour un détail (couvercle, bord).
Durée (CSS — transition de la carte et de l'ombre) 0,3 s Gardez la même durée sur les deux, sinon l'ombre arrive avant ou après l'objet.

FAQ

Elle est noire à 30 % : sur #0a0a0f, elle se confond presque avec le fond, et ce qu'on voit surtout, c'est la carte qui monte. L'effet est fait pour un fond clair ou moyen, là où une ombre de contact se lit comme dans la réalité : table, étagère, page produit. Les trois scènes le montrent sur des fonds crème et bois.
Une box-shadow entoure toute la carte : elle dit « carte qui flotte au-dessus de la page ». Ici, l'ombre est une ellipse plate posée sous l'objet, séparée de lui : quand l'objet monte, elle reste au sol, pâlit et s'étale, ce qui dit « objet soulevé d'une surface ». C'est l'indice que donnent les photos de produits.
Oui : mettez votre image dans .shadow-perspective (ou donnez-lui l'image en fond), ajustez sa taille, et réglez la largeur de l'ombre sur la base de l'objet. Une image détourée (fond transparent) donne le meilleur résultat : l'ombre apparaît alors directement sous l'objet.