Data✨ Premium

Line Chart Draw

Courbe SVG qui se trace de gauche à droite à son arrivée à l'écran, aire teintée en fondu et point lumineux qui s'allume sur chaque sommet au passage du trait.

SVGPath

Mis à jour le

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

3 exemples d'usage

Profil d'altitude d'une boucle de randonnée, tracé quand on descend sur la fiche du sentier — Line Chart Draw exemple 1

① Profil d'altitude d'une boucle de randonnée, tracé quand on descend sur la fiche du sentier

QuandLa fiche d'un sentier dans un site de randonnée : sous l'illustration et les repères (14 km, 420 m de dénivelé, 4 h 30), la section « Profil d'altitude » occupe toute la largeur. En descendant, le trait part du départ, monte jusqu'au point haut du km 7 puis redescend. Dans la capture, la page défile seule.
PourquoiLe randonneur lit la difficulté dans la forme de la courbe : où ça monte, combien de temps. Le tracé progressif fait parcourir la boucle du regard dans le bon sens.
Réglages13 altitudes de 820 à 1 240 m, data-min="820" et data-max="1240" pour coller aux repères écrits à gauche, data-unit="m", --lcd-height: 150px, --lcd-max-width: none, dégradé du vert #2f7d4f au brun #c2410c.
Température d'une serre sur six heures, ouverte en touchant sa tuile — Line Chart Draw exemple 2

② Température d'une serre sur six heures, ouverte en touchant sa tuile

QuandL'appli des capteurs d'un jardin partagé : une colonne de tuiles (serre, bacs, récupérateur d'eau, compost) et un panneau de détail vide. Toucher la tuile « Serre » affiche le panneau ; la courbe de 10 h à 15 h se trace alors, sous le pic, la valeur actuelle et le minimum.
PourquoiLe chiffre de la tuile dit l'état, la courbe dit la tendance : on voit que la serre a dépassé le seuil d'ouverture vers 13 h. Le tracé démarre au moment où le panneau s'ouvre, donc sous les yeux de la personne qui a touché.
RéglagesSix valeurs (14 à 25 °C), data-unit="°C", data-labels avec les heures pour la description lue, --lcd-height: 132px, dégradé du bleu #3b82f6 à l'orange #ea580c ; le panneau est un hidden retiré au clic.
Mini-courbe de progression dans la notification « nouveau record » en fin de course — Line Chart Draw exemple 3

③ Mini-courbe de progression dans la notification « nouveau record » en fin de course

QuandUne appli de course à pied, à la fin d'une sortie : le bouton « Terminer la séance » fait glisser une notification en haut de l'écran, avec le nouveau record sur 5 km et, à droite, une courbe de 44 px de haut qui monte sur les six dernières sorties.
PourquoiLa courbe qui se dessine prolonge la bonne nouvelle : la vitesse progresse depuis six sorties. Au format d'une notification, elle se lit en une seconde.
RéglagesSix vitesses moyennes (10,8 à 12,4 km/h), data-unit="km/h", --lcd-height: 44px, --lcd-max-width: none, --lcd-min-height: 0, points verts (--lcd-dot: #16a34a) sur fond clair.

Comment ça marche

Tout se règle sur la racine .fx-0226-root : data-values (les nombres, séparés par des virgules), et en option data-labels, data-title, data-unit, data-min et data-max. Le script construit dans .lcd-chart un SVG à la taille réelle du conteneur : une aire .lcd-area, une ligne .lcd-line et un point .lcd-dot par valeur. Les deux dégradés reçoivent un identifiant propre à chaque copie, ce qui évite qu'un graphique caché dans un onglet efface les couleurs d'un autre.

L'échelle verticale va de la plus petite à la plus grande valeur, élargie de 10 % de part et d'autre pour que la courbe ne colle pas aux bords ; data-min et data-max la fixent. Les points sont espacés régulièrement sur toute la largeur, avec une marge de 8 px. Un ResizeObserver recalcule le tracé quand la largeur change, sans relancer l'animation.

Quand au moins 35 % du graphique est visible, la classe lcd-on lance trois animations une seule fois : le trait passe de stroke-dashoffset égal à sa longueur à 0 en 2 s (ease-out), l'aire apparaît en 1 s à partir de 1 s, et chaque point s'allume en 0,5 s avec un retard proportionnel à sa position le long du trait. Les points s'allument donc dans l'ordre, juste après le passage de la ligne, y compris le dernier sommet.

Accessibilité

  • Équivalent texte : .lcd-chart porte role="img" et le script lui donne un aria-label construit à partir des données, par exemple « Visites du site sur six mois. Janv. 1 200, Févr. 2 100… ». Le SVG lui-même est masqué aux lecteurs d'écran.
  • Nombres localisés : les valeurs de cette description sont écrites avec Intl.NumberFormat dans la langue de la page, avec l'unité de data-unit.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, la courbe complète, l'aire et tous les points sont affichés d'emblée.
  • Pas d'interaction : aucun élément focalisable, rien au survol ni au toucher. Pour lire une valeur précise à l'écran, ajoutez vos propres étiquettes autour du graphique.

Compatibilité navigateur

SVG construit en JavaScript (IntersectionObserver, ResizeObserver, Intl.NumberFormat) et animations CSS sur stroke-dashoffset et opacity. Mesuré le 08/11/2026 dans Chromium 151, Firefox 153 et WebKit 26.5 (Playwright) : deux copies indépendantes, la seconde ne se trace qu'une fois affichée, mouvement réduit, 390 px de large, aucune erreur.

Chrome 74+✓ Complet (mesuré dans Chromium 151)
Firefox 69+✓ Complet (mesuré dans Firefox 153)
Safari 13.1+✓ Mesuré dans WebKit 26.5, pas en vrai Safari
Edge 79+✓ Complet (moteur Chromium)
Safari iOS 13.4+✓ Non vérifié sur appareil
Chrome Android 74+✓ Complet (moteur Chromium)

Sans ResizeObserver, la courbe est calculée au démarrage et à son apparition mais ne suit plus les changements de largeur. Sans JavaScript, la zone reste vide : prévoyez un texte de repli si le graphique porte une information indispensable.

Le code

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

index.html — structure
<div class="fx-0226-root" data-title="Visites du site sur six mois" data-labels="Janv.,Févr.,Mars,Avr.,Mai,Juin" data-values="1200,2100,1650,3400,2800,3900">
  <div class="lcd-chart" role="img"></div>
</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
Valeurs (HTML — data-values sur la racine) 1200,2100,1650,3400,2800,3900 Au moins deux nombres séparés par des virgules, point décimal ; un point est dessiné pour chacun.
Libellés et titre (HTML — data-labels, data-title) Six mois, « Visites du site sur six mois » Servent uniquement à la description lue par les lecteurs d'écran ; rien n'est écrit à l'écran.
Unité (HTML — data-unit) Aucune Ajoutée après chaque nombre dans la description (% donne un pourcentage localisé).
Échelle (HTML — data-min, data-max) Plus petite et plus grande valeur, ±10 % Fixez-les pour aligner la courbe sur vos propres repères ou comparer deux graphiques.
Couleurs (CSS — --lcd-from, --lcd-to, --lcd-area) #6366f1 → #d946ef, aire rgba(99, 102, 241, .3) Dégradé horizontal du trait et teinte de l'aire (qui s'efface vers le bas).
Points (CSS — --lcd-dot, --lcd-glow) #fff, halo rgba(99, 102, 241, .8) Couleur des points et de leur lueur.
Dimensions et fond (CSS — --lcd-height, --lcd-max-width, --lcd-min-height, --lcd-bg) 180 px, 560 px, 300 px, #0a0a0f Hauteur du graphique, largeur maximale, hauteur minimale de la racine, fond (transparent sur un site clair).

FAQ

L'effet se concentre sur le tracé. Les axes dépendent trop de chaque page (unités, langue, nombre de repères) : posez vos libellés en HTML autour de .lcd-chart. Les points sont répartis régulièrement avec 8 px de marge, ce qui permet d'aligner une rangée d'étiquettes en justify-content: space-between.
Oui : l'échelle part de la plus petite valeur, quelle qu'elle soit. L'aire est toujours remplie jusqu'au bas du graphique, pas jusqu'au zéro.
Le tracé est recalculé à la nouvelle largeur et reste entièrement visible ; l'animation, elle, n'est jamais rejouée.