Utilitaires✨ Premium

Hypno Cascade

Indicateur d'attente en CSS pur : 24 pétales arc-en-ciel respirent en vague autour d'un libellé lu par les lecteurs d'écran, à la taille voulue.

CSSsibling-indexZero-JS

Mis à jour le

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

3 exemples d'usage

Appli de budget — un compte en cours de synchronisation dans la liste — Hypno Cascade exemple 1

① Appli de budget — un compte en cours de synchronisation dans la liste

QuandDans Sorevance, la liste « Mes comptes » s'ouvre : le compte courant et le livret sont à jour, le compte joint se synchronise avec sa banque. À la place de son solde, une couronne de 52 px tourne à côté de « Synchronisation… », puis le solde revient avec « à l'instant ».
PourquoiL'attente ne bloque pas l'écran : seule la ligne concernée la montre, les autres soldes restent lisibles. Réduite, la couronne garde ses 24 pétales et tient dans la hauteur d'une ligne de liste ; le libellé caché « Synchronisation du compte joint » reste lu par les lecteurs d'écran.
Réglages--hcx-size: 52px, racine de 52×52 px dans la ligne, libellé .hcx-label masqué visuellement par le CSS de la scène, texte visible à côté en aria-hidden. La scène montre la couronne 1,6 s puis le solde 1,3 s, en boucle (attribut hidden sur le bloc qui contient la racine).
Recherche de trajets plein écran — attendre sans écran vide — Hypno Cascade exemple 2

② Recherche de trajets plein écran — attendre sans écran vide

QuandAprès avoir choisi départ et arrivée dans l'application de covoiturage Trajenda, l'écran sombre montre la grande couronne qui respire au centre, le trajet demandé en haut et un conseil en bas.
PourquoiEn grand, la vague arc-en-ciel occupe l'attente : l'écran ne paraît pas figé, et le mot « Recherche » dit ce qui se passe.
Réglages--hcx-size: 250px, libellé « Recherche », fond de carte stylisé sous la couronne. Couleurs et durée d'origine.
Configurateur de canapé — voile d'attente après « Appliquer » — Hypno Cascade exemple 3

③ Configurateur de canapé — voile d'attente après « Appliquer »

QuandDans le configurateur d'Atelier Sofrandel, on choisit un tissu puis « Appliquer » : un voile sombre couvre l'aperçu avec la couronne et « Mise à jour… », puis l'aperçu revient dans la nouvelle couleur.
PourquoiL'indicateur apparaît en réponse à un clic, à l'endroit exact qui va changer : on comprend que c'est l'aperçu qui se recalcule, pas toute la page.
Réglages--hcx-size: 230px dans un voile rgba(18, 14, 26, .72) affiché par l'attribut hidden. Le clic, l'attente de 1,3 s et le changement de tissu sont joués par la scène, en boucle pour la capture.

Comment ça marche

La couronne compte 24 pétales .hcx-petal. Chacun est tourné, teinté et décalé dans le temps selon sa place : sibling-index() quand le navigateur le connaît (Chrome 138, Safari 26.2), sinon la variable --i écrite dans le HTML. La teinte suit le cercle chromatique en oklch ; chaque pétale s'allonge puis se rétracte en 2,4 s (hcx-breathe), avec 0,1 s d'écart avec son voisin, ce qui fait tourner une vague de lumière.

Les teintes passent par deux couleurs déclarées avec @property (--hcx-tint, --hcx-glow) : chaque pétale calcule ainsi la sienne. C'est ce qui corrige Safari 26, qui peignait sinon toute la couronne de la même couleur rose.

La taille se règle par --hcx-size sur la racine (300 px par défaut). Toutes les mesures des pétales sont en unités de conteneur (cqi) : la couronne reste proportionnée à 64 px comme à 300 px, et rétrécit d'elle-même dans un conteneur plus étroit que --hcx-size. Aucun JavaScript : c'est à vous d'afficher l'indicateur au début de l'attente et de le retirer à la fin.

Accessibilité

  • Attente annoncée : le libellé porte role="status". Pour qu'il soit lu, insérez l'indicateur dans la page au moment où l'attente commence, ou changez le texte du libellé à ce moment-là : une zone de statut annonce ses changements, pas son contenu de départ.
  • Couronne décorative : les pétales sont dans un conteneur aria-hidden="true", les points de suspension animés aussi ; seul le mot est lu.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, les pétales s'arrêtent à mi-longueur, bien visibles (opacité 0,8), et les points cessent de clignoter. L'indicateur reste là, figé.
  • Petites tailles : sous 120 px environ, le libellé déborde sur les pétales ; masquez-le visuellement (en gardant role="status") et écrivez l'attente à côté, comme dans l'exemple de la ligne de compte.

Compatibilité navigateur

100 % CSS. Couleurs oklch : Chrome 111, Firefox 113, Safari 15.4. Unités de conteneur : Chrome 105, Firefox 110, Safari 16. @property : Chrome 85, Firefox 128, Safari 16.4. sibling-index() : Chrome 138, Safari 26.2, Firefox 154 (non disponible dans Firefox 153 : la variable --i prend le relais). Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 (Playwright) : teinte propre à chaque pétale dans les trois, tailles 300, 160 et 120 px, deux copies, mouvement réduit, 0 erreur.

Chrome 111+✓ Complet (mesuré)
Firefox 113+✓ Complet, rotation par --i (mesuré)
Safari 16.4+✓ Complet (mesuré dans WebKit)
Edge 111+✓ Complet (moteur Chromium)
Mobile iOS 16.4+✓ Moteur WebKit, non vérifié sur appareil
Android Chrome 111+✓ Complet (moteur Chromium)

Sans oklch (navigateurs anciens), la couronne perd son arc-en-ciel : pétales d'un rose uni, ou sans couleur selon le navigateur ; le libellé reste. Sans unités de conteneur, les pétales perdent leurs dimensions : prévoyez un message d'attente simple pour ces navigateurs si vous les visez.

Le code

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

index.html — structure
<div class="fx-0818-root">
  <div class="hcx-stage">
    <div class="hcx-ring" aria-hidden="true">
      <span class="hcx-petal" style="--i: 0"></span>
      <!-- … 24 pétales, --i de 0 à 23 -->
    </div>
    <p class="hcx-label" role="status">Génération<span class="hcx-dots" aria-hidden="true">…</span></p>
  </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
Taille (CSS — --hcx-size sur .fx-0818-root) 300px De 64 px (dans un bouton, une bulle) à 400 px (écran d'attente). Pétales, rayon et halo suivent.
Vitesse (CSS — durée de hcx-breathe dans .hcx-petal) 2.4s 1,6 s pour une attente nerveuse, 4 s pour un écran calme ; changez aussi le -.1s du décalage pour garder une seule vague.
Couleurs (CSS — --hcx-tint dans .hcx-petal) oklch(78% .29 teinte) sur tout le cercle Fixez la luminosité et la saturation de votre charte, ou remplacez 360 par 120 dans le calcul de teinte pour un dégradé sur un tiers du cercle.
Libellé (HTML — texte de .hcx-label) « Génération » Le mot qui décrit l'attente : « Recherche », « Calcul », « Envoi ». Gardez-le court, il doit tenir dans le cercle.
Fond (CSS — background de .fx-0818-root) #0a0a0f, hauteur mini 300 px Les pétales lumineux ressortent sur un fond sombre ; mettez min-height: 0 pour l'insérer dans un composant.

FAQ

Firefox 153 ne connaît pas encore sibling-index() (prévu dans Firefox 154) : sans --i, tous les pétales s'y superposeraient. Le CSS utilise sibling-index() quand il est là et retombe sur --i sinon.
Insérez la racine, ou retirez l'attribut hidden d'un bloc qui l'entoure (posé sur la racine elle-même, il ne la cache pas : son display: flex l'emporte), juste avant d'appeler votre serveur, puis retirez-la dans le finally de la promesse. L'indicateur n'a aucun JavaScript : il tourne tant qu'il est dans la page.
Oui : changez le nombre de <span class="hcx-petal"> et la valeur --n (24) dans .hcx-petal. Avec 12 pétales, élargissez-les un peu (width) pour garder une couronne dense.