SVG✨ Premium

Animated Icons

Une coche verte et une croix rouge qui se tracent trait après trait dans leur cercle, puis restent affichées : en boucle, ou une seule fois à la demande.

CSSIcons

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

Coche ou croix tracée à la sortie du champ IBAN d'une adhésion à un club d'aviron (Trelmaure) — Animated Icons exemple 1

① Coche ou croix tracée à la sortie du champ IBAN d'une adhésion à un club d'aviron (Trelmaure)

QuandÀ l'étape « Prélèvement », l'adhérent colle son IBAN puis quitte le champ : une croix rouge se trace s'il manque des caractères, avec le message « IBAN incomplet » ; une fois corrigé, une coche verte se trace et le bouton de validation s'active.
PourquoiLe tracé attire l'œil au bon endroit sans fenêtre ni bandeau, et la forme de l'icône répond avant même la lecture du message.
Réglages--chx-size: 26px, --chx-gap: 0, --chx-ok: #22a06b, --chx-ko: #e5484d, --chx-speed: 1.2s, --chx-repeat: 1, fond transparent. La page vérifie le format (27 caractères commençant par FR) et n'affiche que l'icône voulue ; le message est dans une zone aria-live.
Diagnostic d'un vélo électrique : six points vérifiés l'un après l'autre (Voltigrane) — Animated Icons exemple 2

② Diagnostic d'un vélo électrique : six points vérifiés l'un après l'autre (Voltigrane)

QuandDans l'appli du vélo, le diagnostic passe en revue batterie, moteur, freins, pneus, éclairage et chaîne ; à chaque point terminé, une coche ou une croix se trace à gauche de la ligne, et le résumé signale le pneu avant à regonfler.
PourquoiChaque icône qui se dessine marque la fin d'une vérification : on suit la progression ligne par ligne et la seule croix ressort dans la liste.
RéglagesUne racine par ligne avec une seule icône visible, --chx-size: 22px, vert #4ade80, rouge #f87171, --chx-speed: 1s, --chx-repeat: 1. La page affiche les icônes une à une, environ toutes les 0,45 s.
Jeu des 7 différences : coche sur chaque différence trouvée, croix sur un clic à côté (Pimbrelou) — Animated Icons exemple 3

③ Jeu des 7 différences : coche sur chaque différence trouvée, croix sur un clic à côté (Pimbrelou)

QuandSur la page jeux d'un magazine jeunesse, l'enfant touche l'image de droite : une coche se trace sur la différence trouvée et le compteur avance ; un clic à côté fait apparaître une croix qui disparaît après un instant.
PourquoiLe petit tracé récompense chaque trouvaille sur l'image même, et la croix corrige sans gronder ; les coches restées en place montrent ce qui a déjà été trouvé.
RéglagesUne racine par différence (coche seule) et une pour les erreurs (croix seule), --chx-size: 34px, vert #16a34a, rouge #dc2626, --chx-speed: 1s, --chx-repeat: 1, posées sur un disque blanc pour rester lisibles sur le dessin.

Comment ça marche

Chaque icône est un SVG de 60×60 unités : un cercle de rayon 26 (.chx-ring, trait de 3) et, à l'intérieur, la coche (.chx-tick) ou les deux barres de la croix (.chx-bar-1, .chx-bar-2), en traits de 4 aux bouts arrondis. Tous portent pathLength="100" et un tiret de 100 que l'animation fait glisser de 100 à 0 pour faire apparaître le trait.

Tout se joue sur un seul cycle (--chx-speed, 2,4 s) : le cercle se trace pendant les premiers 35 %, la coche entre 25 et 50 % ; pour la croix, la première barre entre 25 et 40 %, la seconde entre 38 et 53 %. L'icône reste ensuite complète jusqu'à la fin du cycle. En boucle (réglage par défaut), elle se redessine toutes les 2,4 s ; avec --chx-repeat: 1, elle se dessine une fois et reste.

Chaque trait suit la même horloge que son cercle : la croix se dessine une fois par cycle, sans clignoter. Les deux icônes fonctionnent chacune seule : gardez celle qui vous sert. Une icône masquée (display: none) puis réaffichée se redessine depuis le début ; --chx-play: paused la fait attendre, vide.

Accessibilité

  • Nom lisible : chaque SVG porte role="img" et un <title> (« Valide », « Erreur » ; en anglais « Valid », « Error »), que les lecteurs d'écran annoncent. Changez ce texte si l'icône dit autre chose.
  • Pas seulement la couleur : la coche et la croix ont des formes différentes. Pour une validation de formulaire, ajoutez un message écrit dans une zone aria-live : l'apparition de l'icône n'est pas annoncée d'elle-même.
  • Mouvement réduit : avec prefers-reduced-motion: reduce, les icônes s'affichent directement complètes (mesuré dans les trois moteurs : 0 animation en cours).
  • Contraste : sur le fond sombre livré, le vert atteint 7,8:1 et le rouge 5,3:1. Sur un fond blanc, le vert #10b981 tombe à 2,5:1 : prenez un vert plus foncé (#15803d) via --chx-ok.

Compatibilité navigateur

CSS seul. pathLength sur un cercle demande Chrome 57, Firefox 61 et Safari 14 ; le mouvement réduit, Chrome 74 et Firefox 63. Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : 0 erreur, chaque trait redémarre une seule fois en 3 s, deux copies indépendantes, rien qui déborde à 390 px.

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

Sans animations CSS, les icônes s'affichent complètes. Avant Safari 14, pathLength est ignoré pour les tirets : les cercles se dessinent en pointillés.

Le code

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

index.html — structure
<div class="fx-0603-root">
  <svg class="chx-icon chx-check" viewBox="0 0 60 60" role="img">
    <title>Valide</title>
    <circle class="chx-ring" pathLength="100" …/>
    <path class="chx-tick" pathLength="100" d="…"/>
  </svg>
  <svg class="chx-icon chx-cross" viewBox="0 0 60 60" role="img">
    <title>Erreur</title>
    <circle class="chx-ring" pathLength="100" …/>
    <path class="chx-bar chx-bar-1" pathLength="100" d="…"/>
    <path class="chx-bar chx-bar-2" pathLength="100" d="…"/>
  </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
--chx-repeat infinite 1 : l'icône se dessine une fois et reste affichée.
--chx-play running paused : l'icône attend, vide, jusqu'au retour à running.
--chx-speed 2.4s Durée d'un cycle ; le tracé occupe à peu près la première moitié.
--chx-ok et --chx-ko #10b981 et #ef4444 Couleurs de la coche et de la croix (cercle compris).
--chx-size et --chx-gap 60px et 30px Taille de chaque icône et espace entre les deux.
--chx-bg et --chx-min-h #0a0a0f et 300px Fond et hauteur minimale du cadre ; transparent et 0 dans un champ ou une liste.

FAQ

Supprimez le SVG inutile du HTML, ou masquez-le en CSS (display: none). Chaque icône a ses propres animations et fonctionne seule.
Avec --chx-repeat: 1, masquez l'icône puis réaffichez-la : icone.style.display = 'none'; icone.getBoundingClientRect(); icone.style.display = '';. Le navigateur redémarre alors l'animation depuis le début.
Oui : dans un des SVG, remplacez les tracés en gardant pathLength="100". Un trait classé chx-tick se dessine après le cercle ; chx-bar-1 puis chx-bar-2 donnent deux traits successifs.