Data✨ Premium

Pie Chart Reveal

Camembert SVG avec légende : quand il arrive à l'écran, chaque part part du haut du disque et glisse jusqu'à sa place en s'élargissant, l'une après l'autre.

SVGSegments

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

Répartition du budget participatif d'une petite ville, dévoilée en arrivant sur « Où va l'argent ? » — Pie Chart Reveal exemple 1

① Répartition du budget participatif d'une petite ville, dévoilée en arrivant sur « Où va l'argent ? »

QuandLa page de résultats du budget participatif d'une commune : un bandeau annonce les 120 000 € votés et le nombre de votants, puis la section « Où va l'argent ? » présente le camembert et sa légende (pistes cyclables, aire de jeux, jardins partagés, bancs et ombrage). Dans la capture, la page défile seule jusqu'à la section.
PourquoiLes habitants veulent voir d'un coup d'œil quel projet a gagné. Les parts qui se mettent en place une à une donnent le temps de lire la légende dans l'ordre.
RéglagesMontants en euros dans data-value (45 600, 28 800, 26 400, 19 200) convertis en pourcentages par le script, --pcs-size: 168px, couleurs #2563eb, #16a34a, #f59e0b, #db2777, textes foncés sur fond clair.
Part des glucides, protéines, lipides et fibres dans l'onglet « Nutrition » d'une recette — Pie Chart Reveal exemple 2

② Part des glucides, protéines, lipides et fibres dans l'onglet « Nutrition » d'une recette

QuandLa fiche d'un taboulé sur un blog de cuisine, avec trois onglets. « Ingrédients » est ouvert par défaut ; un clic sur « Nutrition » affiche les calories et un petit camembert de 116 px avec sa légende en grammes convertis en pourcentages.
PourquoiL'information est secondaire : elle reste rangée dans un onglet et se dévoile seulement à la demande, au moment où l'onglet s'ouvre.
RéglagesValeurs en grammes (38, 9, 12, 6), --pcs-size: 116px, --pcs-min-height: 0, couleurs ambre, vert, framboise et sarcelle ; l'onglet est un vrai role="tab" et le panneau un hidden retiré au clic.
Temps passé par chaque rôle sur l'écran de fin de manche d'un jeu coopératif — Pie Chart Reveal exemple 3

③ Temps passé par chaque rôle sur l'écran de fin de manche d'un jeu coopératif

QuandUn jeu de plateau en ligne : à la fin de la manche, un bandeau « Victoire » s'affiche un instant, puis l'écran de résultats liste les quatre joueurs et leur rôle avec une pastille de couleur. À droite, le camembert du temps de jeu se dévoile.
PourquoiLe résumé de manche devient un petit moment de jeu : chacun guette sa part arriver. La liste des joueurs sert de légende, celle de l'effet est masquée à l'écran mais reste lue.
Réglagesdata-legend="hidden", minutes par rôle (28, 22, 31, 19), --pcs-size: 156px, couleurs #38bdf8, #4ade80, #fb923c, #c084fc reprises sur les pastilles des joueurs.

Comment ça marche

La racine .fx-0227-root contient un emplacement vide .pcs-pie et une liste ul.pcs-legend. Chaque li de la liste est une part : son texte est le libellé, son attribut data-value la quantité. Le script calcule le total et donne à chaque part un angle proportionnel, si bien que le disque est toujours rempli à 100 %, quelles que soient les unités (euros, grammes, minutes).

Le dessin est un SVG de 120 unités de côté, tourné d'un quart de tour pour commencer en haut : un cercle par part, de rayon 30 et d'épaisseur de trait 60, ce qui donne un disque plein. La longueur de chaque trait (stroke-dasharray) vaut sa part de la circonférence et son décalage (stroke-dashoffset) la place où elle commence. Dans la légende, le script ajoute une pastille de couleur et le pourcentage, écrit au format de la langue de la page (« 38 % » en français, « 38% » en anglais).

Au départ toutes les parts ont une longueur nulle. Dès que 35 % du disque est visible, la classe pcs-on donne à chaque cercle sa longueur et son décalage finaux, avec une transition de 1 s (ease-out) retardée de 0,2 s puis de 0,2 s de plus par part. Cela ne se produit qu'une fois. Le disque mesure --pcs-size (180 px) sans jamais dépasser la largeur du conteneur ; quand la place manque, la légende passe sous le disque.

Accessibilité

  • La légende est le texte du graphique : une vraie liste nommée par son aria-label, dont chaque élément se lit « Oui 30 % ». Le SVG est masqué aux lecteurs d'écran pour ne pas répéter l'information.
  • Légende masquée : avec data-legend="hidden", la liste disparaît de l'écran mais reste lue ; donnez alors une autre clé visuelle aux couleurs (comme les pastilles d'une liste de joueurs).
  • Mouvement réduit : sous prefers-reduced-motion: reduce, la transition est supprimée et le camembert complet s'affiche tout de suite.
  • Aucune interaction : rien ne prend le focus, rien ne réagit au survol ou au toucher. Six couleurs se suivent puis se répètent : au-delà de six parts, distinguez-les par la légende.

Compatibilité navigateur

SVG créé par le script, transitions CSS sur stroke-dasharray et stroke-dashoffset, aspect-ratio, IntersectionObserver et Intl.NumberFormat. Mesuré le 08/11/2026 dans Chromium 151, Firefox 153 et WebKit 26.5 (Playwright) : parts justes (30/25/20/25 → 100 %), deux copies indépendantes, mouvement réduit, 390 px de large, aucune erreur.

Chrome 88+✓ Complet (mesuré dans Chromium 151)
Firefox 89+✓ Complet (mesuré dans Firefox 153)
Safari 15+✓ Mesuré dans WebKit 26.5, pas en vrai Safari
Edge 88+✓ Complet (moteur Chromium)
Safari iOS 15+✓ Non vérifié sur appareil
Chrome Android 88+✓ Complet (moteur Chromium)

Sans IntersectionObserver, le camembert se dévoile dès le chargement. Sans JavaScript, seule la liste des libellés s'affiche, sans disque ni pourcentages.

Le code

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

index.html — structure
<div class="fx-0227-root">
  <div class="pcs-pie"></div>
  <ul class="pcs-legend" aria-label="Réponses à l'enquête">
    <li data-value="30">Oui</li>
    <li data-value="25">Plutôt oui</li>
    <li data-value="20">Plutôt non</li>
    <li data-value="25">Non</li>
  </ul>
</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
Parts (HTML — un li data-value="…" par part dans .pcs-legend) Oui 30, Plutôt oui 25, Plutôt non 20, Non 25 Le texte du li est le libellé ; les valeurs peuvent être dans n'importe quelle unité, le script les convertit en parts du total.
Nom de la liste (HTML — aria-label de .pcs-legend) « Réponses à l'enquête » Annoncé par les lecteurs d'écran avant les parts : décrivez ce que montre le graphique.
Légende visible (HTML — data-legend="hidden" sur la racine) Légende affichée Masque la légende à l'écran tout en la laissant lisible par les lecteurs d'écran.
Couleurs (CSS — --pcs-c1 à --pcs-c6) #6366f1, #8b5cf6, #d946ef, #ec4899, #f43f5e, #06b6d4 Une couleur par part, dans l'ordre de la liste ; les pastilles de la légende suivent.
Taille (CSS — --pcs-size, --pcs-min-height) 180 px, 300 px Diamètre maximal du disque (jamais plus large que le conteneur) et hauteur minimale de la racine.
Fond et textes (CSS — --pcs-bg, --pcs-text, --pcs-muted) #0a0a0f, blanc à 80 %, blanc à 50 % Fond de la racine, couleur des libellés et des pourcentages.

FAQ

Non. Le script additionne les valeurs et calcule la part de chacune : 45 600 € sur 120 000 € donne 38 %. Le disque est toujours complet et les pourcentages de la légende sont calculés pour vous, à une décimale près.
La racine est une boîte flexible qui passe à la ligne d'elle-même quand la place manque. Pour forcer la légende dessous, ajoutez flex-direction: column sur .fx-0227-root dans votre CSS.
Non, l'effet est un affichage : il n'y a ni survol ni clic sur les parts. Le détail chiffré est dans la légende, qui reste toujours lisible.