Data✨ Premium

Sparkline

Chiffre-clé avec sa variation et une mini-courbe qui se trace sous lui à son arrivée à l'écran, en vert avec une flèche montante ou en rouge avec une flèche descendante.

SVGTrend

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

Trois tuiles chiffrées en haut de l'espace bénévole d'une épicerie solidaire — Sparkline exemple 1

① Trois tuiles chiffrées en haut de l'espace bénévole d'une épicerie solidaire

QuandL'espace bénévoles d'une association : sous le titre « Ce mois-ci », trois tuiles (dons reçus, bénévoles actifs, colis distribués) montrent d'abord un squelette pendant le chargement, puis leur chiffre, leur variation depuis septembre et leur courbe qui se trace. Les colis, en baisse, passent en rouge avec une flèche vers le bas.
PourquoiD'un coup d'œil, les bénévoles voient ce qui va bien et ce qui demande de l'attention. Trois copies indépendantes, chacune avec sa propre série, prennent seules leur couleur.
RéglagesTrois racines : data-currency="EUR" pour les dons, data-decimals="0" pour les deux autres, valeur et variation calculées, --sprk-height: 38px, --sprk-value-size: 1.15rem, --sprk-up: #15803d, --sprk-down: #b91c1c.
Tendance du prix de chaque produit dans le comparateur d'une épicerie coopérative — Sparkline exemple 2

② Tendance du prix de chaque produit dans le comparateur d'une épicerie coopérative

QuandLa page « Suivi des prix » d'une épicerie en vrac : une ligne par produit (farine, lentilles, riz, huile, café) avec, à droite, la courbe des huit dernières semaines, le prix actuel et son évolution. Les cinq courbes se tracent ensemble à l'ouverture de la page.
PourquoiLe client repère tout de suite ce qui augmente. Ici la convention est inversée pour l'acheteur : la hausse en orange, la baisse en vert, ce que permettent les deux variables de couleur.
RéglagesCinq racines, data-currency="EUR", data-decimals="2", --sprk-up: #b45309, --sprk-down: #15803d, --sprk-height: 30px ; le CSS de la page place l'en-tête à droite de la courbe (flex-direction: row-reverse sur .sprk-box).
Hauteur de neige au sommet et sa courbe sur huit jours — bulletin neige d'une station de ski — Sparkline exemple 3

③ Hauteur de neige au sommet et sa courbe sur huit jours — bulletin neige d'une station de ski

QuandLa page d'accueil d'une station : le visiteur descend sous la photo du sommet jusqu'au « Bulletin neige de ce matin ». « 142 cm » s'affiche en grand avec « +11 cm cette nuit », et la courbe des huit derniers jours se trace à côté des pistes ouvertes et du bouton « Forfait du jour ». Dans la capture, la page défile seule.
PourquoiLe skieur décide de monter ou non en regardant ce chiffre : la courbe qui grimpe montre que la neige s'accumule depuis plusieurs jours, la ligne de la nuit dit ce qui vient de tomber.
Réglagesdata-unit="cm", data-decimals="0", huit relevés de 96 à 142, texte de .sprk-delta écrit dans le HTML (donc conservé), --sprk-value-size: 2rem, --sprk-height: 58px, --sprk-up: #2563eb.

Comment ça marche

La série de nombres se met dans data-values sur la racine .fx-0232-root. Si .sprk-value est vide, le script y écrit la dernière valeur ; si .sprk-delta est vide, il y écrit l'évolution entre la première et la dernière, en pourcentage signé (« +12,5 % »). Les deux passent par Intl.NumberFormat dans la langue de la page, avec data-currency pour un montant (« 4 832 € », « $4,832 »), data-unit pour une unité et data-decimals pour les décimales. Un texte que vous écrivez vous-même dans ces deux éléments est gardé tel quel.

Le sens est déduit des données : si la dernière valeur est plus basse que la première, la racine reçoit la classe sprk-down, qui passe la couleur à --sprk-down (rouge) et retourne la flèche ; sinon tout reste en --sprk-up (vert). data-trend="up" ou "down" impose le sens. La courbe est un SVG construit à la taille réelle de .sprk-chart (hauteur --sprk-height), de la plus petite à la plus grande valeur, avec un point sur la dernière ; un ResizeObserver la recalcule si la largeur change.

Quand 35 % de la courbe est visible, la classe sprk-on la trace de gauche à droite en 1,5 s (ease-out), fait apparaître l'aire en 1 s à partir de 0,5 s, puis allume le point final à 1,5 s. Une seule fois.

Accessibilité

  • Le chiffre et la variation sont du vrai texte, lus dans l'ordre (« 4 832 € +12,5 % ») ; la flèche est décorative et masquée, le signe du pourcentage porte le sens.
  • La courbe a un équivalent : .sprk-chart porte role="img" et un aria-label fait de data-title suivi des valeurs au format de la page.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, la courbe, l'aire et le point sont affichés d'emblée.
  • Couleur doublée : le vert et le rouge ne sont jamais seuls, la flèche et le signe disent aussi si ça monte ou baisse. Aucune interaction : rien ne prend le focus.

Compatibilité navigateur

SVG construit en JavaScript, animations CSS sur stroke-dashoffset et opacity, IntersectionObserver, ResizeObserver et Intl.NumberFormat avec signDisplay. Mesuré le 08/11/2026 dans Chromium 151, Firefox 153 et WebKit 26.5 (Playwright) : deux copies indépendantes, mouvement réduit, 390 px de large, aucune erreur.

Chrome 77+✓ Complet (mesuré dans Chromium 151)
Firefox 78+✓ Complet (mesuré dans Firefox 153)
Safari 14.1+✓ Mesuré dans WebKit 26.5, pas en vrai Safari
Edge 79+✓ Complet (moteur Chromium)
Safari iOS 14.5+✓ Non vérifié sur appareil
Chrome Android 77+✓ Complet (moteur Chromium)

Sans IntersectionObserver, la courbe se trace au chargement. Sans JavaScript, la carte n'affiche que la flèche : écrivez alors la valeur et la variation directement dans le HTML.

Le code

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

index.html — structure
<div class="fx-0232-root" data-currency="EUR" data-title="Recettes des neuf dernières semaines" data-values="4295,4380,4330,4520,4470,4690,4610,4760,4832">
  <div class="sprk-box">
    <div class="sprk-header">
      <span class="sprk-value"></span>
      <span class="sprk-change">
        <svg class="sprk-arrow" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
          <path d="M12 19V5M5 12l7-7 7 7"></path>
        </svg>
        <span class="sprk-delta"></span>
      </span>
    </div>
    <div class="sprk-chart" role="img"></div>
  </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
Série (HTML — data-values sur la racine) 4295,4380,4330,4520,4470,4690,4610,4760,4832 Au moins deux nombres séparés par des virgules, point décimal.
Format (HTML — data-currency, data-unit, data-decimals) EUR (page FR), USD (page EN) ; 0 décimale pour une devise, 1 sinon Devise ISO ou unité libre pour la valeur ; nombre de décimales de 0 à 4.
Valeur et variation (HTML — texte de .sprk-value et .sprk-delta) Vides : calculées à partir de la série Écrivez votre propre texte pour l'afficher à la place (ex. « +1 260 € cette semaine »).
Sens (HTML — data-trend="up" ou "down") Déduit : baisse si la dernière valeur est sous la première Impose la couleur et le sens de la flèche.
Description lue (HTML — data-title) « Recettes des neuf dernières semaines » Début de l'aria-label de la courbe, suivi des valeurs.
Couleurs (CSS — --sprk-up, --sprk-down, --sprk-text) #22c55e, #ef4444, #fff Couleur en hausse, en baisse, et couleur du chiffre.
Tailles et fond (CSS — --sprk-height, --sprk-value-size, --sprk-max-width, --sprk-min-height, --sprk-bg) 40 px, 1.5rem, 280 px, 300 px, #0a0a0f Hauteur de la courbe, taille du chiffre, largeur maximale du bloc, hauteur minimale de la racine, fond.

FAQ

Oui : échangez les couleurs avec --sprk-up et --sprk-down. La flèche suit toujours le sens réel des données, seule la couleur change de signification.
C'est l'écart entre la dernière et la première valeur de data-values, divisé par la première : de 4 295 à 4 832, « +12,5 % ». Si vous voulez une autre comparaison (semaine précédente, objectif), écrivez votre texte dans .sprk-delta.
Oui, chaque copie est indépendante et prend la largeur de sa cellule. Mettez --sprk-min-height: 0 et --sprk-max-width: none, puis disposez .sprk-box en ligne si vous voulez le chiffre à côté de la courbe.