Data✨ Premium

Star Rating Animated

Une vraie note de 1 à 5 étoiles : clic, toucher ou flèches du clavier, les étoiles s'allument jusqu'au choix avec un petit rebond, et la note part avec le formulaire.

CSSInteractive

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

Noter une recette qu'on vient de cuisiner — bloc d'avis en bas de la fiche — Star Rating Animated exemple 1

① Noter une recette qu'on vient de cuisiner — bloc d'avis en bas de la fiche

QuandAprès la dernière étape d'une tarte aux poireaux, le cuisinier choisit ses étoiles sous « Vous l'avez cuisinée ? » ; la note choisie s'écrit à côté du bouton « Publier mon avis », avec un commentaire facultatif.
PourquoiLa note est la réponse la plus rapide à donner : un clic suffit, le rebond confirme qu'il a été pris en compte et la valeur part avec le reste du formulaire d'avis.
RéglagesDans un <form>, name="note-recette", aucune étoile cochée au départ, --strt-size:2.1rem, --strt-on:#f59e0b, --strt-off:#ead7c4, --strt-focus:#c2410c, fond transparent, aligné à gauche. Le texte « Votre note : … » est écrit par la scène à l'événement change. Dans la capture, le premier clic (tombé sous les étoiles) est rejoué sur l'étiquette de la 5e étoile ; le second tombe directement sur cette étoile.
Une note par bouteille — liste d'une cave virtuelle — Star Rating Animated exemple 2

② Une note par bouteille — liste d'une cave virtuelle

QuandDans « Ma cave », chaque bouteille porte sa rangée de petites étoiles roses ; l'amateur note la cuvée qu'il vient d'ouvrir et en revoit une autre, au clic ou au clavier, sans quitter la liste.
PourquoiDans une liste personnelle, la note sert à se souvenir : chaque ligne a sa propre note, réglable sur place, et un coup d'œil suffit pour retrouver les meilleures bouteilles.
RéglagesCinq racines, une par ligne, name différents (cave-1 à cave-5), légende propre à chaque bouteille (« Votre note pour Clos Vendrasque »), --strt-size:1.15rem, --strt-on:#f9a8d4, --strt-off:#4a3340. Dans la capture, le premier clic (hors des étoiles) est rejoué sur l'étoile 4 de la 4e bouteille ; le second tombe vraiment sur la 1re étoile de la 3e bouteille, qui passe à 1, et le passage de la souris montre l'aperçu au survol.
Borne de satisfaction à la sortie d'une médiathèque — étoiles géantes à toucher — Star Rating Animated exemple 3

③ Borne de satisfaction à la sortie d'une médiathèque — étoiles géantes à toucher

QuandSur l'écran posé près de la sortie, le visiteur touche une des cinq grandes étoiles sous « Votre visite vous a plu ? » ; un merci affiche la note, puis la borne se remet à zéro quatre secondes plus tard pour la personne suivante.
PourquoiUne borne doit se comprendre sans mode d'emploi et se toucher sans viser : des étoiles de 60 px prennent tout l'écran et le rebond confirme le geste à distance.
Réglages--strt-size:3.7rem, marge de 8 px par étoile, --strt-on:#fde047, --strt-off:rgba(236,254,255,.18), fond transparent sur un dégradé sarcelle ; l'aperçu au survol est coupé par le CSS de la scène, inutile sur un écran tactile. La note est dans un <form> : la scène appelle form.reset() après 4 s et l'effet remet les étoiles à zéro.

Comment ça marche

Chaque étoile est un vrai bouton radio : <label class="strt-star"> contient un <input type="radio" name="note" value="1…5"> rendu invisible mais posé sur l'étoile, le caractère ★ (.strt-glyph) et un texte pour les lecteurs d'écran (« 4 étoiles sur 5 »). L'ensemble est un <fieldset> nommé par sa <legend> « Votre note ». Le clic, le toucher, Tab puis les flèches : tout ce que fait un groupe radio du navigateur marche ici sans script, y compris l'envoi de note=4 avec le formulaire qui l'entoure.

Le script allume les étoiles jusqu'à la note cochée (classe is-on : jaune #fbbf24, agrandies de 20 %) et les fait rebondir (@keyframes strt-pop, 0,3 s) à chaque nouveau choix, ainsi qu'une fois quand la note de départ apparaît à l'écran. Au survol, le CSS montre un aperçu jusqu'à l'étoile pointée, sans rien cocher. Un reset du formulaire remet les étoiles à la note du HTML.

Plusieurs notes dans la même page : si deux groupes ont le même name (même formulaire, ou tous deux hors formulaire), le script renomme le second (note-2, note-3…) et rend à chacun la note cochée dans son HTML. Rien n'est déclaré sur window. Pour lire la note : l'événement change remonte jusqu'à la racine, et racine.querySelector('.strt-input:checked').value donne la valeur.

Accessibilité

  • Groupe de boutons radio natif : le lecteur d'écran annonce « Votre note, groupe », puis « 4 étoiles sur 5, bouton radio, coché, 4 sur 5 ». Les étoiles dessinées sont masquées (aria-hidden).
  • Clavier : Tab entre dans le groupe sur l'étoile cochée, les flèches changent la note, Tab en sort. Le focus se voit : contour de 2 px autour de l'étoile (:focus-visible, couleur --strt-focus).
  • Toucher : toute la surface de l'étoile reçoit le doigt, puisque le bouton radio la couvre entièrement.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, ni rebond ni transition ; les étoiles s'allument directement.
  • Limite : pas de demi-étoile ; pour une note à 0,5 près, il faudrait dix boutons radio.

Compatibilité navigateur

Boutons radio natifs, CSS et JavaScript sans dépendance (environ 3 Ko). Mesuré le 08/11/2026 dans Chromium 151, Firefox 153 et WebKit 26.5 (Playwright) : clic et toucher sur la 2e copie sans toucher la 1re, Tab puis flèche gauche (4 → 3), contour de focus, valeur envoyée par un formulaire (note=4), noms des quatre copies note, note-2, note-3, note-4, 390 px, mouvement réduit, aucune erreur. Versions tirées de @mdn/browser-compat-data : :focus-visible fixe le minimum pour le contour.

Chrome 86+✓ Complet (mesuré)
Firefox 85+✓ Complet (mesuré)
Safari 15.4+✓ Complet (mesuré dans WebKit)
Edge 86+✓ Complet (moteur Chromium)
iOS Safari 15.4+✓ Non vérifié sur appareil réel
Android Chrome 86+✓ Complet (moteur Chromium)

Plus ancien (à partir de Chrome 51, Firefox 55, Safari 12.1) : tout marche sauf le contour de focus. Sans JavaScript, la note reste un groupe radio utilisable et envoyé avec le formulaire, mais les étoiles ne s'allument qu'au survol.

Le code

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

index.html — structure
<div class="fx-0239-root">
  <fieldset class="strt-rating">
    <legend class="strt-legend">Votre note</legend>
    <div class="strt-stars">
      <label class="strt-star">
        <input class="strt-input" type="radio" name="note" value="1">
        <span class="strt-glyph" aria-hidden="true">★</span>
        <span class="strt-sr">1 étoile sur 5</span>
      </label>
      … (4 autres étiquettes, value 2 à 5 ; checked sur la note de départ)
    </div>
  </fieldset>
</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
Note de départ (HTML — checked sur un .strt-input) 4 Retirez checked partout pour une note vierge, ou placez-le sur une autre étoile.
Nom envoyé (HTML — name des boutons radio) note Nom du champ dans le formulaire. Gardez le même name sur les cinq boutons d'une même note.
Légende et textes lus (HTML — .strt-legend et .strt-sr) « Votre note » · « 1 étoile sur 5 »… Ce qu'entend un lecteur d'écran. La légende est masquée par défaut : retirez .strt-legend de la règle qui masque pour l'afficher.
Couleurs (CSS — --strt-on, --strt-off, --strt-focus) #fbbf24 · blanc à 20 % · #6366f1 Étoiles allumées, éteintes, contour de focus. Sur fond clair, une couleur éteinte comme #e5e7eb.
Taille (CSS — --strt-size) 2rem Taille du caractère ★ ; 1rem dans une liste, 3 à 4rem sur une borne.
Nombre d'étoiles (HTML) 5 Ajoutez une étiquette avec value="6" pour une note sur 6, et adaptez les textes « sur 5 ».
Fond et hauteur (CSS — --strt-bg, --strt-height) #0a0a0f · 300px Dans un formulaire : --strt-bg:transparent; --strt-height:0px.

FAQ

Écoutez change sur la racine : racine.addEventListener('change', () => console.log(racine.querySelector('.strt-input:checked').value)). Dans un formulaire, la note part toute seule avec les autres champs.
Ce n'est pas le rôle de cet effet, qui est un champ à remplir. Si vous l'employez quand même, ajoutez disabled sur le <fieldset> (plus de clic ni de clavier) et .strt-stars{pointer-events:none} pour couper l'aperçu au survol ; un lecteur d'écran annoncera des boutons désactivés.
Deux groupes radio de même name dans un même formulaire (ou tous deux hors formulaire) n'en forment qu'un pour le navigateur : cocher l'un décocherait l'autre. Le script renomme donc la seconde note (note-2). Donnez des noms différents dans votre HTML pour garder la main sur les noms envoyés.