Texte✨ Premium

Parallax Depth Text

Trois calques de texte glissent à des vitesses différentes selon le pointeur — l'écart de déplacement combiné à la hiérarchie d'opacité crée une profondeur 3D par pur CSS/JS.

JSMouseParallax

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. Texte comprend 56 effets, dont 4 gratuits. Découvrir la catégorie →

3 exemples d'usage

Hero d'agence créative — Titre de marque en profondeur 3D — Parallax Depth Text exemple 1

① Hero d'agence créative — Titre de marque en profondeur 3D

QuandLa section hero d'un site d'agence ou de portfolio expose le nom ou le slogan de la marque sur toute la largeur de l'écran.
PourquoiL'amplitude de déplacement de la souris sur 100 % de la largeur révèle pleinement l'écart de vitesse entre les couches. La grande surface typographique transforme chaque mouvement du pointeur en geste expressif.
Réglagesdata-speed 0.12 / 0.05 / 0.02, font-size 5–7 rem, palette : arrière-plan indigo 20 %, milieu violet 55 %, avant blanc pur, transition .2s ease-out.
Couverture de magazine — Mot-clé éditorial en relief doré — Parallax Depth Text exemple 2

② Couverture de magazine — Mot-clé éditorial en relief doré

QuandLe header d'une rubrique ou la home d'une publication place un unique mot fort (thème du numéro, titre de dossier) comme élément visuel dominant.
PourquoiLa profondeur multi-couche donne au mot un traitement graphique premium qu'une typographie plate ne peut pas reproduire. L'interactivité souris rend la couverture vivante sans aucun asset supplémentaire.
Réglagesdata-speed 0.14 / 0.07 / 0.02, couleurs or : calque arrière rgba(251,191,36,0.15), milieu rgba(245,222,158,0.45), avant #fef9e7, font-weight 900.
Portfolio interactif — Cartes de projets en relief — Parallax Depth Text exemple 3

③ Portfolio interactif — Cartes de projets en relief

QuandUne page portfolio ou un index de projets présente plusieurs travaux sous forme de cartes ; l'utilisateur navigue entre elles en déplaçant le pointeur.
PourquoiChaque carte dispose de sa propre profondeur parallaxe : le titre du projet se révèle en trois calques au fil du curseur, transformant la navigation entre projets en exploration spatiale récurrente — bien au-delà d'un unique moment d'entrée.
Réglagesdata-speed 0.07 / 0.035 / 0.01 (amplitude contenue pour format carte), font-size 1.9 / 1.75 / 1.6 rem, palette émeraude : arrière rgba(16,185,129,0.18), milieu rgba(52,211,153,0.45), avant #ecfdf5, overflow hidden sur la carte.

Comment ça marche

Le balisage repose sur trois .kt-parallax-layer positionnés en absolu dans un .kt-parallax-container doté de perspective: 600px. Chaque calque déclare sa vitesse via data-speed : 0,08 pour le calque arrière, 0,04 pour le milieu, 0,01 pour le premier plan. Tous portent le même texte — l'écart de vitesse suffit à créer l'illusion 3D sans canvas ni WebGL.

Un écouteur mousemove sur le wrapper .demo-preview normalise la position du pointeur en coordonnées centrées (−0,5 à 0,5 sur chaque axe). La translation de chaque calque vaut tx = x × speed × 800 et ty = y × speed × 400 (rapport 2:1 horizontal/vertical) : à speed 0,08, le calque arrière se décale jusqu'à ±320 px en X ; à speed 0,01, le calque avant de ±40 px à peine.

La propriété transition: transform .15s ease-out sur chaque calque interpole vers la nouvelle position à chaque événement — aucun requestAnimationFrame, aucune boucle. L'événement mouseleave repasse tous les transforms à translate(0,0) avec la même transition, ce qui ramène les calques au repos en douceur.

La hiérarchie visuelle amplifie la perception spatiale : le calque arrière est à 25 % d'opacité et 2,6 rem ; le milieu à 50 % et 2,4 rem ; le premier plan à pleine opacité avec un text-shadow indigo — l'œil perçoit le calque le moins opaque comme le plus lointain, le plus lumineux comme le plus proche.

Accessibilité

  • prefers-reduced-motion absent : le code ne vérifie pas cette préférence — les translations se déclenchent même si l'utilisateur a activé la réduction de mouvement. À corriger en ajoutant if (window.matchMedia('(prefers-reduced-motion:reduce)').matches) return; avant les écouteurs mousemove.
  • Aucun aria-hidden ni role dans le code fourni : si les calques sont purement décoratifs, ajoutez aria-hidden="true" sur le conteneur ; s'ils portent un contenu informatif, ajoutez role="img" et aria-label.
  • Le texte est rendu en HTML natif (pas de canvas) — il reste sélectionnable, copiable et lu par les technologies d'assistance même sans JS.
  • Seul le calque avant (blanc, 2,2 rem) doit satisfaire le contraste WCAG AA (≥ 4,5:1 sur fond sombre). Les calques arrière (opacité 25–50 %) sont décoratifs et n'ont pas à respecter ce seuil.
  • L'effet ne comporte aucun élément interactif : la navigation au clavier n'est pas affectée, aucun piège à focalisation.

Compatibilité navigateur

Nécessite CSS transform/transition et les événements DOM mousemove/mouseleave — support universel depuis 2015. Zéro dépendance externe.

Chrome 88+✓ Complet
Firefox 87+✓ Complet
Safari 15+✓ Complet
Edge 88+✓ Complet
Mobile iOS✓ Statique (pas de mousemove au touch)
Android Chrome✓ Statique (pas de mousemove au touch)

Sans JS, les trois calques s'affichent superposés à leur position naturelle — le texte reste lisible. Sans CSS transform, les calques se chevauchent sans décalage, aucune erreur fatale.

Le code

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

index.html — structure
<div class="demo-preview">
  <div class="kt-parallax-container" id="parallax1">
    <div class="kt-parallax-layer" data-speed="0.08">Texte</div>
    <div class="kt-parallax-layer" data-speed="0.04">Texte</div>
    <div class="kt-parallax-layer" data-speed="0.01">Texte</div>
  </div>
  <span class="demo-hint">Déplacer la souris</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
data-speed (par calque) 0.08 / 0.04 / 0.01 Coefficient de translation de chaque calque. Plus la valeur est haute, plus le calque se déplace vite. Élargissez l'écart entre calques pour un effet de profondeur plus dramatique.
Couleur — .kt-parallax-layer:nth-child(1) rgba(99, 102, 241, 0.25) Couleur du calque arrière (le plus rapide). Réduire l'opacité à 0.10–0.15 pour un fond encore plus discret ; changer la teinte pour adapter à la charte.
Couleur — .kt-parallax-layer:nth-child(2) rgba(139, 92, 246, 0.5) Couleur du calque intermédiaire. Ajuster l'opacité entre 0.3 et 0.7 pour renforcer ou atténuer le sentiment de profondeur.
font-size par calque 2.6 / 2.4 / 2.2 rem Dégressif arrière → avant. Inverser le ratio (avant plus grand) ou égaliser les tailles change radicalement la lecture spatiale.
perspective (conteneur) 600px Valeur CSS perspective sur .kt-parallax-container. 300 px = distorsion 3D plus forte ; 1200 px = effet atténué, plus subtil.
transition (calques) transform .15s ease-out Délai et easing du suivi souris. 0.25s ease-in-out = mouvement organique ; 0s = collé au pointeur, réactif mais saccadé.
Amplitude horizontale — constante JS 800 Multiplicateur X dans tx = x × speed × 800 (ligne var tx). Réduire à 500 pour moins de déplacement latéral, augmenter à 1200 pour un effet cinématique.
Amplitude verticale — constante JS 400 Multiplicateur Y dans ty = y × speed × 400 (ligne var ty). Réduire à 200 pour minimiser le déplacement vertical (utile quand le conteneur est peu haut).

FAQ

Ajoutez un <div class="kt-parallax-layer" data-speed="0.16"> comme premier enfant du conteneur (speed plus élevée = calque encore plus lointain visuellement) et ajoutez la règle CSS :nth-child(4) avec opacité réduite (0.10) et font-size légèrement supérieure. Le JS lit tous les calques via querySelectorAll('.kt-parallax-layer') et les traite automatiquement — aucune modification JS requise.
Non sans adaptation : mousemove ne se déclenche pas au toucher. Pour activer le parallaxe sur mobile, ajoutez un écouteur touchmove qui alimente les mêmes variables x/y, ou un écouteur deviceorientation basé sur l'inclinaison du gyroscope. Sans cela, les calques restent à leur position initiale — le texte est lisible mais statique.
Oui — chaque .kt-parallax-layer est un div HTML indépendant. Placez des mots, tailles ou même des images différents dans chaque calque. L'effet de profondeur naît uniquement de la vitesse de déplacement (data-speed), pas de la répétition du même texte — vous pouvez créer un mot principal au premier plan et un mot secondaire en arrière-plan.