Texte✨ Premium

Kinetic Typography

Animation CSS pure — chaque lettre alterne graisse, couleur et déplacement vertical avec un stagger de 0,2 s par caractère. Zéro JavaScript.

CSSKineticStagger

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

Titre de héros éditorial — Portfolio ou agence créative — Kinetic Typography exemple 1

① Titre de héros éditorial — Portfolio ou agence créative

QuandUn portfolio ou une landing d'agence affiche son mot-clé en grand format — « DESIGN », « STUDIO », « CREATE » — comme signature visuelle plein écran à la place d'une image.
PourquoiSur de grands glyphes (3–5 rem), la variation de poids est spectaculaire et suffit à tenir toute une page d'accueil. Le chaotique contrôlé d'une seule typographie donne plus de caractère qu'une illustration statique.
Réglagesfont-size : 4 rem sur .vf-kinetic-char ; animation-delay : 0,15 s entre lettres ; animation-duration : 2,5 s pour un rythme plus vif sur les mots courts.
Intro de marque — Écran de chargement ou splash screen — Kinetic Typography exemple 2

② Intro de marque — Écran de chargement ou splash screen

QuandL'application affiche son nom animé pendant le chargement initial ou avant que l'interface principale ne soit prête.
PourquoiL'animation lettre par lettre rend l'attente moins perceptible sans aucun asset graphique. Le nom de marque s'impose naturellement sans avoir besoin d'un logo vectoriel.
Réglagesfont-size : 3 rem ; animation-duration : 2 s ; stagger 0,25 s — rythme plus lent pour accompagner une barre de progression.
Affiche de festival — Titre de scène animé — Kinetic Typography exemple 3

③ Affiche de festival — Titre de scène animé

QuandUne affiche numérique de festival ou de concert affiche le nom d'une scène ou d'un artiste en grand format — chaque lettre du titre pulse indépendamment, évoquant l'énergie et l'imprévisibilité du live.
PourquoiLe registre festif et chaotique de l'effet coïncide naturellement avec l'esprit d'un festival. La palette violet–rose–cyan–ambre rappelle les projecteurs de scène, et la variation de graisse lettre par lettre donne vie au titre sans aucun asset graphique supplémentaire.
Réglagesfont-size : 3,5 rem sur .vf-kinetic-char ; animation-duration : 2 s pour un rythme nerveux calqué sur l'énergie du live ; animation-delay : 0,2 s entre lettres ; palette par défaut — #8b5cf6, #ec4899, #06b6d4, #f59e0b — pour un rendu lumières de scène.

Comment ça marche

Le texte est découpé en <span class="vf-kinetic-char"> placés dans un .vf-kinetic-line en display:flex. Chaque span reçoit un animation-delay croissant (0 s, 0,2 s, 0,4 s…) en attribut style inline — c'est ce décalage qui crée le stagger lettre par lettre, sans aucune logique JavaScript.

La keyframe vfKinetic alterne quatre états toutes les 3 s (ease-in-out, infinite) en faisant varier simultanément trois propriétés CSS : font-weight (800 → 300 → 900 → 400), color (#8b5cf6 → #ec4899 → #06b6d4 → #f59e0b) et transform (translateY ±8 px + scaleY 0,9–1,2). Chaque lettre étant en phase différente, l'œil perçoit un désordre contrôlé alors que chaque animation individuelle reste parfaitement régulière.

L'interpolation de font-weight n'est fluide qu'avec une police variable supportant l'axe wght. Inter (utilisé par défaut) satisfait ce critère. Avec une police non variable, le navigateur saute aux graisses disponibles (400, 700…) au lieu d'interpoler.

Le overflow: hidden sur .vf-kinetic-line empêche les lettres de déborder verticalement lors du scaleY(1,2) — à désactiver si la hauteur du conteneur est fixe et que vous souhaitez laisser l'effet respirer au-delà des bords.

Accessibilité

  • prefers-reduced-motion absent du code : les animations tournent sans condition. Pour respecter la préférence OS, ajoutez @media (prefers-reduced-motion: reduce) { .vf-kinetic-char { animation: none; } }.
  • Les <span> sont du texte natif — les lecteurs d'écran lisent le mot entier sans perturbation ; l'animation est transparente pour eux.
  • Aucun élément focusable dans la structure : pas de piège clavier.
  • La variation de couleur ne porte pas d'information sémantique ; le texte reste lisible dans tous les états de la keyframe.
  • Contraste WCAG AA vérifié sur fond sombre (#0a0a0f) : violet #8b5cf6 (≈ 4,9:1), rose #ec4899 (≈ 5,9:1), cyan #06b6d4 (≈ 8,6:1), ambre #f59e0b (≈ 9,8:1) — tous passent pour du texte de grande taille (≥ 18 pt).

Compatibilité navigateur

CSS pur, zéro dépendance. L'animation font-weight nécessite une police variable (axe wght) pour une interpolation fluide.

Chrome 110+✓ Complet
Firefox 110+✓ Complet
Safari 16+✓ Complet
Edge 110+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Sans support des animations CSS, les lettres s'affichent avec leur style de base (graisse 800, couleur #8b5cf6). Aucune erreur JS, le texte reste lisible.

Le code

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

index.html — structure
<div class="vf-kinetic-scene">
  <div class="vf-kinetic-line" id="vfKineticText">
    <span class="vf-kinetic-char" style="animation-delay:0s">K</span>
    <span class="vf-kinetic-char" style="animation-delay:0.2s">I</span>
    <span class="vf-kinetic-char" style="animation-delay:0.4s">N</span>
    <!-- … une &lt;span&gt; par lettre … -->
  </div>
  <span class="vf-kinetic-sub">weight + transform + color</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
animation-duration (sur .vf-kinetic-char) 3s Durée d'un cycle complet. 1,5 s = nerveux et rapide, 5 s = lent et contemplatif.
animation-delay (inline par span) 0, 0.2s, 0.4s… Stagger entre lettres. Réduisez à 0,08 s pour un effet quasi-simultané ; augmentez à 0,4 s pour une vague lente.
font-size (sur .vf-kinetic-char) 2.2rem Taille des lettres. 1,4 rem pour un label discret, 5 rem pour un titre héros plein écran.
font-family (sur .vf-kinetic-char) Inter Police. Doit être une police variable (axe wght) pour l'interpolation fluide — Inter, Plus Jakarta Sans, DM Sans, Manrope.
Couleurs dans @keyframes vfKinetic (0%, 25%, 50%, 75%) #8b5cf6, #ec4899, #06b6d4, #f59e0b Les 4 couleurs traversées par les lettres. Alignez-les sur votre palette brand.
font-weight dans @keyframes vfKinetic 800, 300, 900, 400 Les 4 graisses alternées (100–900 par multiples de 100). Réduisez l'écart (ex. 500–700) pour un effet plus subtil.
translateY dans @keyframes vfKinetic 0, -8px, 0, 4px Déplacement vertical de chaque lettre. ±16 px pour plus de rebond, ±2 px pour un effet très discret.
scaleY dans @keyframes vfKinetic 1, 1.2, 0.9, 1.1 Étirement vertical. Passez à 1 à tous les stops pour désactiver la déformation et garder uniquement graisse + couleur.

FAQ

Un oneliner JS suffit pour splitter automatiquement un élément existant : Array.from(el.textContent).forEach((c,i) => { const s = document.createElement('span'); s.className = 'vf-kinetic-char'; s.style.animationDelay = i * 0.2 + 's'; s.textContent = c; el.appendChild(s); }); — videz d'abord le conteneur (el.innerHTML = '') puis lancez cette boucle.
L'interpolation de font-weight n'est fluide qu'avec une police variable supportant l'axe wght. Sans cela, le navigateur saute aux graisses disponibles (400, 700…). Chargez Inter avec font-weight: 100 900 via Google Fonts ou auto-hébergez une police variable pour retrouver la transition lisse.
Ciblez tous les spans et basculez animation-play-state : document.querySelectorAll('.vf-kinetic-char').forEach(s => s.style.animationPlayState = 'paused') pour geler, remplacez par 'running' pour reprendre. Aucune autre modification n'est nécessaire.