SVG✨ Premium

SVG Text Draw

Un mot en SVG dont le contour des lettres se trace, puis se remplit de couleur : en boucle, une seule fois, ou au moment que vous choisissez.

CSSText

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. SVG comprend 30 effets, dont 3 gratuits. Découvrir la catégorie →

3 exemples d'usage

Nom d'un domaine viticole tracé en titre du haut de page (Domaine de Velaurac) — SVG Text Draw exemple 1

① Nom d'un domaine viticole tracé en titre du haut de page (Domaine de Velaurac)

QuandÀ l'ouverture du site, sous « Domaine de », le nom se dessine en grandes lettres à empattements sur un ciel de fin de journée au-dessus des rangs de vigne, puis se remplit de crème et reste en place au-dessus du bouton « Découvrir les cuvées ».
PourquoiLe nom écrit comme à la plume donne au domaine une entrée soignée, et le titre reste un vrai texte dans le <h1>.
RéglagesviewBox 250×66, --txd-width: 440px, contour et remplissage #fbead0, --txd-stroke: .9, police à empattements (Didot, Georgia, serif), --txd-weight: 400, --txd-speed: 3.4s, --txd-repeat: 1. Pour la démonstration, la scène rejoue l'ouverture toutes les 7 s.
Signature de la présidente tracée au bas de la lettre annuelle d'une fondation (Fondation Ysarde) — SVG Text Draw exemple 2

② Signature de la présidente tracée au bas de la lettre annuelle d'une fondation (Fondation Ysarde)

QuandLe donateur lit la lettre de remerciement ; quand la signature manuscrite arrive entièrement à l'écran, elle se trace à l'encre bleue puis se remplit, juste au-dessus du nom et de la fonction de la signataire.
PourquoiLa signature qui s'écrit au moment où on la lit rend la lettre plus personnelle qu'une image figée, sans rien demander au lecteur.
RéglagesviewBox 220×60, texte aligné à gauche (x="4"), --txd-width: 210px, encre #1e3a8a, --txd-stroke: .6, police manuscrite installée sur l'appareil (pile cursive), --txd-speed: 2.2s, --txd-repeat: 1, --txd-play: paused. Un IntersectionObserver de la page passe la variable à running ; la scène fait défiler la lettre.
Mot mystère tracé en grand quand le joueur trouve la réponse (Lettrimbe) — SVG Text Draw exemple 3

③ Mot mystère tracé en grand quand le joueur trouve la réponse (Lettrimbe)

QuandDans le défi du jour d'un jeu de lettres, le joueur remet cinq lettres dans l'ordre et valide : le mot MELON se dessine en grandes capitales orange, se remplit, et le gain de points s'affiche dessous.
PourquoiLa réponse qui s'écrit devant le joueur fait durer la petite victoire, et le remplissage final marque que la partie est gagnée.
RéglagesviewBox 250×66, --txd-width: 360px, contour #ffb347, remplissage #ff9f1c, --txd-stroke: 1.2, police et graisse par défaut, --txd-speed: 2.6s, --txd-repeat: 1. Le panneau de victoire passe de display: none à visible à la validation, ce qui lance le tracé.

Comment ça marche

Le mot est un élément <text> (classe .txd-text) centré dans un SVG de 220×80 unités, en corps 48 et graisse 800. Il reçoit un contour (--txd-line, épaisseur 1,5) découpé en tirets de 400 unités ; chaque lettre a son propre contour et le tiret repart au début de chacun, si bien que toutes les lettres se tracent en même temps.

L'animation txdDraw dure --txd-speed (3 s) : de 0 à 50 %, le décalage du tiret passe de 400 à 0 et le contour se dessine sur des lettres encore vides ; de 50 à 70 %, la couleur de remplissage (--txd-fill) apparaît ; le mot reste ensuite plein jusqu'à la fin du cycle. Par défaut, le cycle tourne en boucle et repart d'un mot vide ; --txd-repeat: 1 le joue une fois et laisse le mot rempli, --txd-play: paused le fait attendre.

Le tracé dépend de la police : le code demande Inter, puis la police système. Il ne télécharge aucune police ; si Inter n'est pas installée, c'est la police du système qui se dessine. Le mot est centré (x="110", text-anchor="middle") : il reste au milieu quand vous le changez.

Accessibilité

  • Texte annoncé : le SVG porte role="img" et un <title> qui reprend le mot ; c'est lui que lisent les lecteurs d'écran. Changez-le en même temps que le texte.
  • Titre de page : placé dans un <h1> ou un <h2>, le SVG donne son nom au titre ; le mot reste aussi présent en texte dans le HTML.
  • Mouvement réduit : avec prefers-reduced-motion: reduce, le mot s'affiche directement contour et remplissage compris, même réglé en attente (mesuré dans les trois moteurs : 0 animation en cours).
  • Contraste : l'indigo #6366f1 atteint 4,4:1 sur le fond livré ; pour un mot posé sur une photo, gardez un fond assez uni derrière les lettres.

Compatibilité navigateur

CSS seul. Le mouvement réduit demande Chrome 74, Firefox 63 et Safari 10.1. Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : 0 erreur, une seule animation par mot, deux copies indépendantes, rien qui déborde à 390 px. Le dessin exact varie avec la police installée sur l'appareil.

Chrome 74+✓ Complet (mesuré)
Firefox 63+✓ Complet (mesuré)
Safari 10.1+✓ Complet (mesuré dans WebKit 26.5)
Edge 79+✓ Complet (moteur Chromium)
Safari iOS 10.3+✓ Complet (moteur WebKit, non testé sur appareil)
Chrome Android 74+✓ Complet (moteur Chromium)

Sans animations CSS, le mot s'affiche rempli avec son contour. Sans la police demandée, il se dessine dans la police de repli du système.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0605-root">
  <svg class="txd-svg" viewBox="0 0 220 80" role="img">
    <title>SVG</title>
    <text class="txd-text" x="110" y="58" text-anchor="middle">SVG</text>
  </svg>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
Le mot (<text> et <title>) SVG Changez les deux ensemble ; élargissez le viewBox (et x, sa moitié) pour un mot plus long.
--txd-repeat infinite 1 : le mot se trace une fois et reste rempli.
--txd-play running paused : rien n'apparaît avant le retour à running (par exemple quand le mot devient visible).
--txd-speed 3s Durée du cycle : la moitié pour le contour, un cinquième pour le remplissage.
--txd-line et --txd-fill #6366f1 et #6366f1 Couleurs du contour et du remplissage final.
--txd-font, --txd-weight, --txd-stroke Inter puis police système, 800, 1.5 Police, graisse et épaisseur du contour ; une police fine demande un contour plus fin.
--txd-width, --txd-bg, --txd-min-h 220px, #0a0a0f, 300px Largeur du dessin (la hauteur suit le viewBox), fond et hauteur minimale du cadre.

FAQ

Le contour est celui de la police affichée. Le code ne charge aucune police : sans Inter installée, la police système prend le relais. Pour un dessin identique partout, hébergez une police web chez vous et mettez son nom dans --txd-font.
Le corps est fixé à 48 unités : élargissez le viewBox (par exemple 0 0 420 80), placez x à la moitié (210) et augmentez --txd-width pour garder la même taille à l'écran.
Chaque contour reçoit un tiret de 400 unités, ce qui couvre largement les lettres en corps 48. Avec une police très ornée dont un contour dépasse cette longueur, une partie de la lettre n'apparaît qu'au remplissage.