Texte✨ Premium

Typewriter Variable

Révèle un texte monospace lettre par lettre avec la police variable Recursive et un curseur clignotant — purement CSS, zéro JavaScript.

CSSTypewriterMono

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

Landing page développeur — Terminal d'accueil — Typewriter Variable exemple 1

① Landing page développeur — Terminal d'accueil

QuandLe visiteur arrive sur la page d'accueil d'un outil CLI, d'une API ou d'un SaaS technique — le terminal posé en hero communique immédiatement la proposition de valeur.
PourquoiL'effet monospace et le curseur clignotant activent la reconnaissance instantanée du terminal chez les développeurs. Il occupe toute la largeur disponible et ancre la page dans l'univers tech sans nécessiter d'illustration.
RéglagesCouleur de texte #10b981 (vert terminal), taille 1,4rem, steps(24) pour 24 caractères, durée 5s (frappe lente, lecture aisée).
Carte documentation — Extrait de code live — Typewriter Variable exemple 2

② Carte documentation — Extrait de code live

QuandDans une page de documentation ou un README interactif, une carte présente la ligne de code clé de l'API — l'animation attire l'œil sur l'exemple le plus important.
PourquoiRendre une ligne de code statique « vivante » augmente la lisibilité perçue et guide le développeur vers l'information essentielle. Le fond de carte sombre isole l'extrait du reste de la page.
RéglagesTaille 1rem, font-variation-settings: "MONO" 1, "CASL" 0, "wght" 500 pour une graisse légèrement plus marquée, couleur #a78bfa pour coller à une palette violet/indigo.
Portfolio créatif — Bio interactive au chargement — Typewriter Variable exemple 3

③ Portfolio créatif — Bio interactive au chargement

QuandLa page « À propos » d'un développeur ou d'un designer technique affiche son titre ou sa spécialité en mode machine à écrire — la révélation progressive capte l'attention dès l'arrivée.
PourquoiLe typewriter est l'une des rares animations expressives qui reste sobre. Sur fond sombre, il positionne l'auteur dans un univers craft sans aucune illustration requise.
RéglagesTaille 2rem, "wght" 700 pour un titre affirmé, couleur #f1f5f9 (blanc cassé), durée 6s, steps(28), une seule ligne sans lignes de contexte.

Comment ça marche

Le texte est écrit entièrement dans le DOM mais dissimulé derrière overflow: hidden; white-space: nowrap. L'animation vfType fait passer la width de 0 à 280px en steps(20) — soit 20 sauts discrets d'égale largeur — ce qui simule visuellement la révélation caractère par caractère. La pause de 50 % à 80 % maintient le texte visible avant l'effacement, puis le cycle recommence indéfiniment.

Le curseur est le border-right: 2px solid de l'élément texte lui-même. L'animation vfBlink bascule la couleur de la bordure vers transparent à 50 % avec un timing step-end — aucun fondu, saut franc — ce qui reproduit exactement le clignotement d'un curseur de terminal classique.

La police Recursive est une variable font : l'axe "MONO" 1 bascule son moteur de dessin en espacement monospace strict (tous les glyphes à largeur identique). C'est cette propriété qui rend la technique steps() crédible — chaque saut de largeur correspond exactement à un caractère. Les axes "CASL" (cursivité) et "wght" (graisse) sont disponibles pour varier le style sans changer de police.

Les lignes d'accompagnement (.vf-typewriter-line) utilisent le même Recursive Mono à 0,75rem et 30 % d'opacité — elles représentent les commandes précédentes et suivantes du terminal, donnant du contexte sans attirer l'attention. La scène entière est centrée par flexbox vertical.

Accessibilité

  • prefers-reduced-motion : ABSENT du code — l'animation de frappe et le clignotement du curseur s'exécutent même quand le système signale reduce. Pour corriger, ajoutez : @media (prefers-reduced-motion: reduce) { .vf-typewriter-text { animation: none; width: 280px; border-right: none; } }
  • Le texte est directement dans le DOM (<span> natif) — les lecteurs d'écran le lisent sans obstacle, aucun aria-hidden ni canvas.
  • Contraste : #10b981 (vert Emerald) sur fond #0a0a0f → ratio ≈ 8,5:1, niveau WCAG AAA (texte normal). Vérifiez le ratio si vous changez la couleur.
  • Aucune interaction clavier requise — l'effet est purement décoratif, pas de focusable.
  • La structure HTML ne porte pas de role ni d'aria-label. Pour un usage en hero, ajoutez role="img" aria-label="Animation de terminal" sur le conteneur.

Compatibilité navigateur

Nécessite CSS animation, steps() et font-variation-settings — disponibles dans tous les navigateurs supportant les polices variables.

Chrome 62+✓ Complet
Firefox 62+✓ Complet
Safari 11+✓ Complet
Edge 18+✓ Complet
Mobile iOS 11+✓ Complet
Android Chrome 62+✓ Complet

Si Recursive n'est pas chargée, le navigateur bascule sur la <code>monospace</code> système (Courier New, Consolas…). L'animation reste fonctionnelle, le rendu visuel change légèrement. Sans support <code>font-variation-settings</code>, Recursive s'affiche en style statique par défaut.

Le code

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

index.html — structure
<div class="vf-preview">
  <div class="vf-typewriter-scene">
    <span class="vf-typewriter-line">
      <span class="vf-typewriter-prompt">$</span> commande précédente
    </span>
    <span class="vf-typewriter-text">texte à animer ici</span>
    <span class="vf-typewriter-line">
      <span class="vf-typewriter-prompt">$</span> prochaine-commande
    </span>
  </div>
</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 (vfType) 4s Durée d'un cycle de frappe complet. Augmentez à 6–8s pour une frappe lente et lisible, réduisez à 2s pour un rendu nerveux.
steps(20) dans vfType 20 Nombre de colonnes révélées par cycle — doit correspondre au nombre de caractères du texte pour un alignement parfait. Comptez vos caractères et ajustez.
max-width sur .vf-typewriter-text 280px Longueur maximale visible. À aligner avec la largeur réelle du texte au corps choisi pour éviter l'effet « coupé ».
color sur .vf-typewriter-text #10b981 Couleur du texte et du curseur (le border-right hérite de la même valeur via la propriété color).
font-size sur .vf-typewriter-text 1.2rem Corps du texte animé. Ajustez en cohérence avec max-width et steps().
font-variation-settings sur .vf-typewriter-text "MONO" 1, "CASL" 0, "wght" 400 Axes de la police Recursive. "CASL" 1 = style cursif, "wght" 700 = gras, "MONO" 1 obligatoire pour l'espacement fixe.
color sur .vf-typewriter-prompt #8b5cf6 Couleur du symbole de prompt ($). Adaptez à votre palette brand.
color sur .vf-typewriter-line rgba(255,255,255,0.3) Opacité des lignes de contexte (commandes statiques autour du texte animé).
gap sur .vf-typewriter-scene 12px Espacement vertical entre les lignes du terminal. Augmentez pour aérer, réduisez pour compacter.

FAQ

Oui, intégralement. L'effet n'utilise que CSS : deux @keyframes, une propriété animation et font-variation-settings. Aucun fichier .js n'est nécessaire. Copiez le HTML et le CSS, ajoutez la police Recursive via Google Fonts, et c'est prêt.
Modifiez directement le contenu du <span class="vf-typewriter-text">. Ensuite, adaptez steps(N) dans l'animation vfType au nombre de caractères de votre texte (comptez y compris les espaces), et ajustez max-width pour que la ligne ne soit pas coupée.
Pas directement avec ce code : l'animation est un cycle fixe sur un seul texte. Pour faire défiler plusieurs textes sans JS, il faut empiler les <span> en position absolue et décaler leurs animation-delay. Avec un peu de JS, la solution la plus propre est de modifier le textContent au moment de la réinitialisation (quand width revient à 0).