Texte✨ Premium

Clip Path Reveal

Révèle un texte progressivement de gauche à droite par une animation CSS clip-path: inset() — zéro JavaScript, direction et durée configurables.

CSSClip-pathReveal

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 de portfolio — Révélation du titre principal au chargement — Clip Path Reveal exemple 1

① Hero de portfolio — Révélation du titre principal au chargement

QuandAu chargement d'un site portfolio ou d'une landing page d'agence, quand le titre principal entre en scène.
PourquoiLe dévoilement gauche→droite crée une impression de frappe cinématique qui attire l'attention sans distraire du message. L'effet est sobre et lisible sur n'importe quel fond.
RéglagesDurée 0.8s, easing cubic-bezier(0.25, 1, 0.5, 1), font-size: 4rem, font-weight: 900.
Article éditorial — Apparition d'un titre de section au scroll — Clip Path Reveal exemple 2

② Article éditorial — Apparition d'un titre de section au scroll

QuandQuand un titre de chapitre, une accroche ou un sous-titre entre dans le viewport lors du défilement d'un article long-format.
PourquoiUn <code>IntersectionObserver</code> ajoute la classe au moment où l'élément devient visible — le dévoilement progressif remplace un simple fade et renforce la sensation de découverte.
RéglagesDurée 1s, easing ease-out, délai de 0.15s par élément pour enchaîner plusieurs titres sans embouteillage visuel.
Lancement de campagne — Le nom de marque se dévoile comme un rideau — Clip Path Reveal exemple 3

③ Lancement de campagne — Le nom de marque se dévoile comme un rideau

QuandSur une page de lancement de produit ou une campagne événementielle, au chargement de la page, pour révéler le nom de marque ou le slogan phare sur grande surface.
PourquoiL'effet est pensé pour les grandes surfaces : sur un texte à 5 rem et plus, l'animation imite un rideau qui s'ouvre, bien plus mémorable qu'un simple fade. Un stagger de 0,6 s entre le nom et le tagline crée une séquence cinématique ; un bouton Rejouer ancré en bas double d'un appel à l'action.
RéglagesDurée 1.2s, easing cubic-bezier(0.25, 1, 0.5, 1), font-size: 5rem, font-weight: 900, délai 0.6s sur le tagline pour le stagger.

Comment ça marche

Le dévoilement repose sur la propriété CSS clip-path: inset(). L'élément .text-clip-reveal démarre avec clip-path: inset(0 100% 0 0) — le rectangle de découpe occupe toute la largeur par la droite, rendant le texte totalement invisible. L'animation clipRevealAnim fait glisser ce rectangle vers inset(0) (zéro découpe de chaque côté), dévoilant le texte de gauche à droite.

La propriété animation sur .text-clip-reveal est déclarée en shorthand : 1s ease 0s 1 normal forwards running. Le mot-clé forwards est essentiel — il maintient l'état final (inset(0), texte entièrement visible) après la fin de l'animation, évitant un flash de retour à l'état initial masqué.

Le mécanisme est entièrement CSS : aucun JavaScript n'est nécessaire pour l'animation. Pour rejouer l'effet par programmation, il faut forcer un reflow en retirant la classe, en lisant offsetWidth, puis en la rajoutant — cette opération reset le contexte d'animation du navigateur.

La direction du dévoilement est contrôlée par la valeur initiale de clip-path : déplacer le 100% parmi les quatre paramètres inset(top right bottom left) permet de dévoiler depuis n'importe quel bord — droite, gauche, haut ou bas.

Accessibilité

  • prefers-reduced-motion : absent du code — aucun media query n'est inclus dans le CSS de l'effet. Pour un public large, ajoutez : @media (prefers-reduced-motion: reduce) { .text-clip-reveal { animation: none; clip-path: inset(0); } }
  • La propriété clip-path est purement visuelle : elle ne retire pas le texte du flux DOM ni de l'arbre d'accessibilité — un lecteur d'écran lit le contenu même lorsqu'il est visuellement masqué par le rectangle de découpe.
  • Contraste : le texte blanc (#fff) sur fond sombre (#0a0a0f) dépasse largement WCAG AA (ratio > 18:1 par défaut). À vérifier si vous personnalisez les couleurs.
  • Pas d'interaction clavier ni de comportement de focus dans l'effet — il est passif (animation CSS au chargement). Aucun tabIndex ni aria-* n'est requis pour l'effet seul.
  • Pour un déclenchement au scroll (IntersectionObserver + ajout de classe), le texte est déjà présent dans l'arbre d'accessibilité avant que la classe ne soit ajoutée : aucune information n'est cachée aux lecteurs d'écran.

Compatibilité navigateur

Nécessite clip-path CSS — supporté dans tous les navigateurs modernes depuis 2017. Zéro dépendance externe, zéro JavaScript.

Chrome 55+✓ Complet
Firefox 54+✓ Complet
Safari 9.1+✓ Complet
Edge 79+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Si <code>clip-path</code> n'est pas supporté (IE 11), le texte s'affiche directement sans animation — aucune erreur JS, la page reste lisible.

Le code

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

index.html — structure
<div class="demo-preview">
  <!-- .text-clip-reveal s'applique sur n'importe quel élément texte -->
  <span class="demo-text text-clip-reveal">VOTRE TEXTE</span>
</div>

<!-- Ou directement sur un titre -->
<h1 class="demo-text text-clip-reveal">Titre principal</h1>
🔒 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
Direction — inset initial sur .text-clip-reveal inset(0 100% 0 0) Côté de départ du dévoilement. inset(0 0 0 100%) = droite→gauche ; inset(0 0 100% 0) = haut→bas ; inset(100% 0 0 0) = bas→haut.
Durée — 1ʳᵉ valeur de animation 1s Durée de l'animation. 0.4s pour un effet snappy, 2s pour un rendu cinématique.
Easing — 2ᵉ valeur de animation ease Courbe de vitesse. linear pour un défilement mécanique, cubic-bezier(0.25, 1, 0.5, 1) pour élan puis décélération.
Délai — 3ᵉ valeur de animation 0s Délai avant démarrage. Enchaîner 0s, 0.15s, 0.3s… sur plusieurs éléments crée un effet cascade.
font-size sur .demo-text 2.5rem Taille du texte. clamp(1.5rem, 5vw, 4rem) pour un rendu responsive.
font-weight sur .demo-text 800 Graisse. 400 pour un style éditorial léger, 900 pour un impact maximal.
Replay JS Pour rejouer sans rechargement : el.classList.remove('text-clip-reveal'); void el.offsetWidth; el.classList.add('text-clip-reveal'). La lecture d'offsetWidth force le reflow qui reset le contexte d'animation.

FAQ

Oui — l'animation est entièrement en CSS. Ajoutez simplement la classe .text-clip-reveal sur n'importe quel élément texte et l'effet se déclenche au chargement. JavaScript n'est utile que pour rejouer l'animation ou la déclencher au scroll via IntersectionObserver.
Modifiez la valeur clip-path initiale sur .text-clip-reveal. La syntaxe inset(top right bottom left) indique quel côté masque le texte au départ : inset(0 100% 0 0) = masqué par la droite (révèle gauche→droite) ; inset(100% 0 0 0) = masqué par le haut (révèle bas→haut) ; inset(0 0 0 100%) = masqué par la gauche (révèle droite→gauche).
Oui. Omettez la classe .text-clip-reveal dans le HTML initial et fixez clip-path: inset(0 100% 0 0) en CSS inline ou via une classe neutre. Un IntersectionObserver ajoute ensuite .text-clip-reveal lorsque l'élément entre dans le viewport — le navigateur déclenche alors l'animation au moment exact de la visibilité.