Comment animer du texte sans nuire à la lisibilité ni au référencement ?

Les effets de texte animent titres et mots : dégradés, machine à écrire, glitchs, apparitions lettre par lettre, variations de graisse avec les polices variables. Ils utilisent background-clip: text, @keyframes et les axes des polices variables, plus un petit script qui découpe un titre en un span par caractère quand chaque lettre doit bouger seule.

Comment choisir, performances et accessibilité
  • Réservez-les aux textes courts et visibles : Animated Gradient ou Typing Effect pour un titre de héros, Letter Fade In pour une accroche, Neon Flicker pour une page d'événement.
  • Laissez le vrai texte dans le HTML pour que moteurs de recherche et lecteurs d'écran le lisent normalement ; quand un titre est découpé en lettres, gardez un aria-label avec la phrase complète.
  • Évitez d'animer de longs paragraphes et affichez directement l'état final pour prefers-reduced-motion.
  • Animated Gradient, Typing Effect, Letter Fade In et Weight Breathing sont gratuits avec leur code complet ; les autres sont inclus dans Premium.
Générateur Dither & ASCII — votre photo ou votre logo en trame vivante, palettes rétro, animée. Aperçu gratuit, export en un bloc. Essayer avec votre logo →
Gradient Flow

Animated Gradient

Gradient qui se déplace à travers le texte en boucle.

CSS Gradient Loop
Page de l’effet →
Voir le code source
HTML
<div class="demo-preview">
  <span class="demo-text text-animated-gradient">Gradient Flow</span>
</div>
CSS
.demo-preview,
.demo-preview *,
.demo-preview *::before,
.demo-preview *::after {
  box-sizing: border-box
}

.demo-preview {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 250px;
  overflow: hidden;
  position: relative;
  background: rgb(26, 26, 36);
  color: rgb(255, 255, 255);
  font-family: sans-serif;
}

.demo-text {
  font-size: 2.5rem;
  font-weight: 800;
  letter-spacing: -0.02em;
}

.text-animated-gradient {
  background: linear-gradient(90deg, #6366f1, #8b5cf6, #d946ef, #6366f1);
  background-size: 300% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: gradientMove 4s linear infinite;
}

.demo-text span {
  display: inline-block;
}

@keyframes gradientMove {
  0% {
    background-position: 0% 50%;
  }

  100% {
    background-position: 300% 50%;
  }
}
JavaScript
/* CSS pur — aucun JavaScript requis */
Hello World

Typing Effect

Simulation d'écriture avec curseur clignotant.

CSS Animation Typewriter
Page de l’effet →
Voir le code source
HTML
<div class="demo-preview">
  <span class="demo-text text-typing">Hello World</span>
</div>
CSS
.demo-preview,
.demo-preview *,
.demo-preview *::before,
.demo-preview *::after {
  box-sizing: border-box
}

.demo-preview {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 250px;
  overflow: hidden;
  position: relative;
  background: rgb(26, 26, 36);
  color: rgb(255, 255, 255);
  font-family: sans-serif;
}

.demo-text {
  font-size: 2.5rem;
  font-weight: 800;
  letter-spacing: -0.02em;
}

.text-typing {
  overflow: hidden;
  border-right: 3px solid #6366f1;
  white-space: nowrap;
  animation: typing 3s steps(20) infinite, blink 0.5s step-end infinite alternate;
  width: 0;
  max-width: fit-content;
}

.demo-text span {
  display: inline-block;
}

@keyframes typing {

  0%,
  90%,
  100% {
    width: 0;
  }

  30%,
  60% {
    width: 100%;
  }
}

@keyframes blink {
  50% {
    border-color: transparent;
  }
}
JavaScript
/* CSS pur — aucun JavaScript requis */

Glitch Effect

Distorsion numérique style cyberpunk.

CSS Glitch Retro

Slide Reveal

Texte qui apparaît par le bas. Cliquez pour rejouer.

CSS Reveal Scroll

Wave Effect

Chaque lettre ondule avec un délai progressif.

CSS JS Wave

Stroke Animation

Remplissage progressif du texte outlined.

CSS Stroke Fill

Shadow Pop

Ombre qui grandit au survol pour effet 3D.

CSS Hover 3D

Blur Reveal

Texte qui se déflou progressivement. Cliquez pour rejouer.

CSS Blur Reveal

Neon Flicker

Effet néon avec scintillement réaliste.

CSS Neon Glow

Split Color

Texte bicolore avec séparation animée.

CSS Color Split

Neon Flicker Text

Texte avec lueur néon qui scintille comme une vraie enseigne.

CSS Neon Flicker

3D Extrude Text

Texte avec effet d'extrusion 3D au survol.

CSS 3D Hover

Variable Font Weight

Animation de l'épaisseur de la police au survol.

CSS Hover Variable Font

Scramble Text

Effet de brouillage de caractères au survol.

CSS JS Hover

Wave Animation V2

Animation d'onde avec délai progressif par lettre.

CSS Animation Wave

Highlight Marker

Effet surligneur qui apparait au survol.

CSS Hover Gradient

3D Shadow Depth

Ombre 3D avec profondeur qui s'étend au survol.

CSS 3D Hover

Flip Characters

Chaque caractère se retourne au survol.

CSS Hover 3D

Outline to Fill

Texte contour qui se remplit au survol.

CSS Hover Stroke

Gradient Flow

Gradient multicolore qui défile en continu.

CSS Gradient Loop

Neon Glow

Effet neon lumineux avec scintillement.

CSS Neon Glow

Blur to Sharp

Texte flou qui devient net au survol.

CSS Hover Blur

Letter Spacing

Espacement des lettres qui s'agrandit au survol.

CSS Hover Spacing

Clip Path Reveal

Texte qui se révèle progressivement. Cliquez pour rejouer.

CSS Clip-path Reveal

Letter Fade In

Each letter fades in with a staggered delay for smooth reveal.

JS CSS Stagger
Page de l’effet →
Voir le code source
HTML
<div class="demo-preview">
  <span class="demo-text text-fade-in" id="fadeInText"></span>
  <button class="replay-btn" onclick="replayFadeIn()">Replay</button>
</div>
CSS
.demo-preview,
.demo-preview *,
.demo-preview *::before,
.demo-preview *::after {
  box-sizing: border-box
}

.demo-preview {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 250px;
  overflow: hidden;
  position: relative;
  background: rgb(26, 26, 36);
  color: rgb(255, 255, 255);
  font-family: sans-serif;
}

/* Variables du design system du site, dont ce code dépend (valeurs de css/style.css — à adapter librement). */
.demo-preview {
  --primary-light: #818cf8;
  --radius-md: 0.5rem;
  --transition-fast: 150ms ease;
}

.demo-text {
  font-size: 2.5rem;
  font-weight: 800;
  letter-spacing: -0.02em;
}

.text-fade-in span {
  opacity: 0;
  animation: fadeInLetter 0.5s ease forwards;
}

.replay-btn {
  position: absolute;
  bottom: 15px;
  right: 15px;
  padding: 8px 16px;
  background: rgba(99, 102, 241, 0.2);
  border: 1px solid rgba(99, 102, 241, 0.4);
  border-radius: var(--radius-md);
  color: var(--primary-light);
  font-size: 0.8rem;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--transition-fast);
}

.replay-btn:hover {
  background: rgba(99, 102, 241, 0.4);
  transform: scale(1.05);
}

.demo-text span {
  display: inline-block;
}

@keyframes fadeInLetter {
  to {
    opacity: 1;
  }
}
JavaScript
(function() {
  function splitText(element, text, delayStep = 0.05) {
    element.innerHTML = text.split('').map((char, i) => {
      if (char === ' ') return ' ';
      return `<span style="animation-delay: ${i * delayStep}s">${char}</span>`;
    }).join('');
  }

  function initFadeIn() {
    const el = document.getElementById('fadeInText');
    splitText(el, 'FADE IN', 0.08);
  }

  function replayFadeIn() {
    const el = document.getElementById('fadeInText');
    el.innerHTML = '';
    setTimeout(() => initFadeIn(), 50);
  }

  initFadeIn();
  window.replayFadeIn = replayFadeIn;
})();

Letter Slide Up

Letters slide up from below one by one for a smooth entrance.

JS CSS Slide

Letter Rotate In

Letters rotate into view with a 3D flip effect.

JS CSS 3D

Word by Word

Words appear one at a time for dramatic text reveals.

JS CSS Words

Scramble Text

Text scrambles through random characters then resolves like a decoder.

JS Decoder Matrix

Wave Animation

Letters wave up and down continuously with offset timing.

CSS Loop Wave

Bounce In Letters

Letters bounce in with elastic easing for playful animations.

JS CSS Elastic

Typewriter Delete

Types text, deletes it, then types new text in a cycle.

JS Typewriter Loop

Split Hover

Letters scatter on hover and reform when mouse leaves.

JS Hover Interactive

Gradient Letter Flow

Gradient color flows through each letter sequentially.

CSS Gradient Flow

Scatter to Word

Les caractères volent depuis des positions aléatoires et s'assemblent en un mot au chargement ou au clic.

JS Animation Transform

Wave Text

Chaque lettre oscille verticalement avec un timing décalé créant une vague continue.

CSS Animation Wave

Elastic Bounce Letters

Le texte s'étire et rebondit avec une physique de ressort à l'apparition.

CSS Spring Bounce

Magnetic Cursor Text

Les caractères individuels sont attirés vers la position du curseur.

JS Mouse Interactive

Gravity Drop Text

Les lettres tombent du haut avec la gravité et rebondissent sur la ligne de base.

JS Physics Gravity

Text Whirlpool

Les caractères orbitent en motif circulaire puis se stabilisent en texte lisible.

JS Animation Orbit

Typewriter Glitch

Machine à écrire classique avec des interruptions glitch aléatoires (échanges de caractères, scintillements).

JS Typewriter Glitch

Breathing Text

Le texte se dilate et se contracte subtilement comme une respiration, décalé par mot.

CSS Animation Scale

Text Shuffle Reveal

Les caractères cyclent rapidement à travers des lettres aléatoires avant de se fixer sur la bonne.

JS Decode Reveal

Parallax Depth Text

Texte multi-couches se déplaçant à des vitesses différentes au mouvement de souris, créant de la 3D.

JS Mouse Parallax

Liquid Stretch Text

Les lettres s'étirent comme du caramel au survol avec un retour élastique.

CSS Hover Stretch

Text Explosion

Cliquer pour disperser les caractères avec physique, cliquer à nouveau pour les rassembler.

JS Click Physics
Breathe font-weight: 300 ↔ 900

Weight Breathing

Texte qui « respire » en oscillant entre font-weight 300 et 900, avec ajustement de l'espacement des lettres.

CSS Variable Animation
Page de l’effet →
Voir le code source
HTML
<div class="demo-preview vf-preview">
  <div class="vf-breathing-scene">
    <span class="vf-breathing-text">Breathe</span>
    <span class="vf-breathing-sub">font-weight: 300 ↔ 900</span>
  </div>
</div>
CSS
.demo-preview,
.demo-preview *,
.demo-preview *::before,
.demo-preview *::after {
  box-sizing: border-box
}

.demo-preview {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 280px;
  overflow: hidden;
  position: relative;
  background: rgb(10, 10, 15);
  color: rgb(255, 255, 255);
  font-family: sans-serif;
}

.demo-preview.vf-preview {
  min-height: 280px;
  background: #0a0a0f;
}

.vf-breathing-scene {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
}

.vf-breathing-text {
  font-family: 'Inter', sans-serif;
  font-size: 2.5rem;
  color: #fff;
  animation: vfBreathe 3s ease-in-out infinite;
}

.vf-breathing-sub {
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.4);
}

@keyframes vfBreathe {

  0%,
  100% {
    font-weight: 300;
    letter-spacing: 2px;
  }

  50% {
    font-weight: 900;
    letter-spacing: -1px;
  }
}
JavaScript
/* CSS pur — aucun JavaScript requis */

Hover Weight

Mots qui passent de light à black au survol avec transition fluide du poids et de l'espacement.

CSS Hover Weight

Wave Animation

Vague de poids parcourant chaque lettre avec un délai décalé. Chaque caractère oscille indépendamment.

CSS Wave Stagger

Casual Morph

Police Recursive morphant entre ses axes casual, mono et weight. Transitions fluides entre 3 états.

CSS Recursive Multi-axes

Scroll Weight

Poids typographique lié au scroll via animation-timeline: scroll(). De 100 à 900 puis retour.

CSS Scroll Weight

Typewriter Variable

Effet machine à écrire avec la police Recursive en mode monospace et curseur clignotant.

CSS Typewriter Mono

Wonky Headlines

Police Fraunces avec axes WONK et SOFT animés. Transition fluide entre le style display et texte.

CSS Fraunces Wonk

Optical Size

Démonstration de l'axe opsz de Fraunces : détails adaptés à chaque taille, du display au body text.

CSS opsz Typography

Interactive Axes

Contrôlez en temps réel les axes wght, CASL et MONO de Recursive avec des curseurs interactifs.

CSS JS Interactive

Kinetic Typography

Lettres animées individuellement avec variation de poids, couleur et position. Effet chaotique maîtrisé.

CSS Kinetic Stagger

Questions fréquentes

Comment créer un texte gradient en CSS ? +

Appliquez un background gradient, puis utilisez background-clip: text et -webkit-text-fill-color: transparent. Le texte devient un masque pour le gradient. Animez la position du background pour un effet de mouvement.

Comment faire un effet machine a écrire en CSS ? +

Utilisez une animation qui augmente progressivement la largeur du texte avec overflow: hidden et white-space: nowrap. Ajoutez un border-right animé pour simuler le curseur. Pour un contrôle plus fin, utilisez JavaScript avec un setInterval.

Quel impact les animations de texte ont-elles sur le SEO ? +

Les animations CSS n'affectent pas le SEO car Google lit le contenu HTML, pas le rendu visuel. Assurez-vous que le texte est présent dans le DOM (pas génère par JavaScript) et reste lisible une fois l'animation terminée.

Comment animer chaque lettre séparément en CSS ? +

La technique du text splitting consiste a envelopper chaque caractère dans un span, puis a appliquer un animation-delay incremental. En JavaScript : text.split('').map((char, i) => `${char}`).

Comment faire un texte qui se révèle au scroll ? +

Combinez IntersectionObserver avec une animation CSS. Quand l'élément entre dans le viewport, ajoutez une classe qui déclenche l'animation (opacity, transform, clip-path). C'est la technique utilisée par les sites modernes comme Apple.

Catégories similaires