Cartes✨ Premium

Parallax Layers

Trois couches CSS empilées à des profondeurs translateZ distinctes dans un contexte preserve-3d — le survol approfondit chaque plan et révèle l'illusion de profondeur.

CSS3DParallax

Vous aurez accès à la démo interactive avec un compte gratuit.

Cet effet fait partie d'Effect.Labs — 811 effets vanilla, une partie gratuite, une partie premium. Cartes comprend 41 effets, dont 6 gratuits. Découvrir la catégorie →

3 exemples d'usage

Carte produit premium — vitrine e-commerce — Parallax Layers exemple 1

① Carte produit premium — vitrine e-commerce

QuandUne grille produit ou un carrousel sur une landing page ou une boutique — l'utilisateur survole pour explorer l'article avant de cliquer.
PourquoiLes trois couches permettent de séparer visuellement l'image produit (fond), le badge prix (milieu) et le nom (avant-plan) : au survol, le titre « s'avance » vers l'utilisateur, signalant l'interactivité et renforçant la perception de qualité sans animation gadget.
Réglagesperspective 800px pour un effet plus dramatique, layer-3 à translateZ(80px) / hover 95px pour un avant-plan saillant, transition 0.4s ease-out pour une montée fluide.
Hero de landing page — panneau de présentation d'application — Parallax Layers exemple 2

② Hero de landing page — panneau de présentation d'application

QuandUn panneau ou une carte mis en avant dans la section hero d'une page d'accueil de SaaS ou d'application mobile.
PourquoiLa profondeur 3D crée une hiérarchie visuelle immédiate sans image animée : le fond applicatif reste ancré, la signature de l'app se déplace, le titre principal arrive vers le visiteur. Résultat : un effet premium en CSS pur, aucune dépendance JS.
RéglagesCard élargie à 400×260px via CSS, perspective 1200px pour un effet subtil, couches à translateZ(10/30/55px) pour une progression non linéaire entre les plans.
Carte d'article — grille de blog ou de magazine — Parallax Layers exemple 3

③ Carte d'article — grille de blog ou de magazine

QuandDans une grille éditoriale en ligne où chaque carte article bénéficie d'un survol interactif pour inciter au clic.
PourquoiSéparer l'illustration (fond), la catégorie (milieu) et le titre (avant) crée une profondeur narrative : au survol, le titre arrive vers le lecteur, signalant l'interactivité bien mieux qu'un simple changement de couleur ou une ombre CSS classique.
RéglagesTransition 0.25s pour une réaction vive, layer-3 à translateZ(70px) / hover 85px pour que le titre se détache nettement de l'illustration de fond.

Comment ça marche

Le conteneur .card-parallax-layers combine deux propriétés CSS qui ouvrent un espace 3D partagé : transform-style: preserve-3d indique au moteur de rendu de traiter les enfants directs dans le même volume tridimensionnel (au lieu de les aplatir), et perspective: 1000px fixe la distance de l'œil virtuel. Plus cette valeur est faible, plus la distorsion perspective est intense.

Chaque couche enfant est placée à une profondeur Z propre via translateZ : la couche de fond à 20 px, la couche intermédiaire à 40 px, la couche avant-plan à 60 px. La projection perspective CSS fait paraître les éléments proches légèrement plus grands — ce différentiel d'échelle entre les trois plans crée l'illusion de profondeur même sans mouvement.

Au survol :hover, chaque couche avance de 10 px supplémentaires en Z (20→30, 40→50, 60→70). La transition: transform .3s anime ce changement. Comme la couche avant-plan est déjà la plus proche du point de vue, l'agrandissement perspectif qu'elle subit lors de cette avancée est plus fort que celui du fond — c'est ce différentiel d'agrandissement qui donne la sensation de parallaxe entre les couches.

L'effet est entièrement déclaratif CSS — aucun JavaScript, aucun requestAnimationFrame, aucun écouteur mousemove. La carte ne s'incline pas selon la position du curseur : seul le survol global déclenche la transition Z. Résultat : zéro coût de calcul JS, compatible SSR/CSP strict.

Accessibilité

  • prefers-reduced-motion absent du code : les transitions CSS jouent systématiquement au survol, même si l'utilisateur a activé « Réduire les animations » dans son OS. Pour une implémentation accessible, enveloppez les déclarations transition dans @media (prefers-reduced-motion: no-preference) { … }.
  • Aucun rôle ARIA (role, aria-label) n'est présent sur la carte dans le code de base — les couches sont traitées comme décoratives. Si le contenu des couches est informatif, ajoutez role="img" et un aria-label sur le conteneur.
  • Le déclencheur est :hover uniquement. Un utilisateur clavier (tabulation sur la carte) n'active pas l'effet 3D. Pour corriger, ajoutez .card-parallax-layers:focus-within .layer-N { transform: translateZ(…) } en miroir des règles :hover.
  • La couche layer-1 a une opacité de 0,3 dans l'exemple fourni — si elle contient du texte ou une icône informative, le ratio de contraste risque d'être insuffisant (WCAG 1.4.3). Vérifiez le contraste ou utilisez cette couche uniquement pour des éléments décoratifs.
  • L'effet est purement visuel et n'interfère pas avec les lecteurs d'écran si le contenu textuel reste dans le flux DOM normal (les couches ne sont pas en aria-hidden dans le code de base).

Compatibilité navigateur

Nécessite transform-style: preserve-3d et perspective — supportés nativement dans tous les navigateurs modernes depuis 2015.

Chrome 36+✓ Complet
Firefox 16+✓ Complet
Safari 9+✓ Complet
Edge 79+✓ Complet
Mobile iOS✓ Statique (hover inactif)
Android Chrome✓ Statique (hover inactif)

Sans support de transform-style: preserve-3d, les couches s'affichent aplaties dans leur ordre DOM — le contenu reste lisible et la carte fonctionnelle, l'effet de profondeur n'apparaît pas.

Le code

Structure HTML à coller dans votre page (CSS + JS disponibles avec un compte premium) :

index.html — structure
<div class="card-demo card-parallax-layers">
  <!-- Couche de fond : élément décoratif, texture, image (translateZ le plus faible) -->
  <span class="layer-1" style="position: absolute;">…</span>

  <!-- Couche intermédiaire : badge, prix, catégorie -->
  <span class="layer-2" style="position: absolute;">…</span>

  <!-- Couche avant-plan : titre principal, CTA (translateZ le plus élevé) -->
  <span class="layer-3">…</span>
</div>
🔒 Débloquer le code complet — à partir de 2,99 € le 1er mois

HTML + CSS + JS complet, prêt à coller — avec des centaines d'effets premium.

Personnaliser

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

Option / propriétéDéfautEffet
--bg-card #12121a Variable CSS sur :root — couleur de fond de la carte. Accepte n'importe quelle valeur CSS (couleur, dégradé via background-image, transparent).
--radius-xl 1rem Variable CSS sur :root — rayon des coins de la carte.
perspective 1000px Propriété CSS sur .card-parallax-layers — distance de l'œil virtuel. 500 px = effet exagéré et dramatique ; 1500 px+ = perspective subtile et élégante.
translateZ (layer-1) 20px / hover 30px Profondeur de la couche de fond, déclarée dans .card-parallax-layers .layer-1 et :hover .layer-1. Augmentez l'écart repos/hover pour accentuer l'animation.
translateZ (layer-2) 40px / hover 50px Profondeur de la couche intermédiaire dans .card-parallax-layers .layer-2 et :hover .layer-2.
translateZ (layer-3) 60px / hover 70px Profondeur de la couche avant-plan dans .card-parallax-layers .layer-3 et :hover .layer-3. C'est le plan le plus visible — réservez-le au titre ou à l'élément principal.
transition .3s Durée de la transition sur chaque couche. Ajoutez un easing explicite (ex. ease-out, cubic-bezier(.2,.6,.3,1)) pour personnaliser la cinématique de profondeur.

FAQ

Non. Le code de base réagit uniquement au survol global via CSS :hover — toutes les couches avancent en Z sans rotation ni tilt selon la position précise du curseur. Pour ajouter l'inclinaison (rotX/rotY calculés sur mousemove), une dizaine de lignes JS suffisent : écoutez mousemove sur la carte, normalisez l'offset du curseur entre -1 et 1, puis appliquez rotateX(Ydeg) rotateY(Xdeg) sur le conteneur en direct via style.transform.
Oui. Ajoutez un élément enfant dans .card-parallax-layers et définissez sa profondeur dans le CSS : .card-parallax-layers .layer-4 { transform: translateZ(80px); transition: transform .3s } avec son état hover correspondant. Il n'y a pas de limite technique, mais au-delà de 4 ou 5 couches, la profondeur perçue se sature visuellement et les couches les plus proches peuvent dépasser les bords de la zone perspective.
Non, pas sans adaptation. Sur mobile, :hover est rarement déclenché par le toucher (comportement dépendant du navigateur et de l'OS). La carte s'affiche statiquement avec les couches à leur profondeur de repos — pas d'erreur, juste aucune animation. Pour activer l'effet au toucher, ajoutez un gestionnaire touchstart/touchend en JS qui ajoute et retire une classe CSS .is-hovered sur la carte, en miroir des règles :hover.