3D✨ Premium

Spiral Path

Un point cyan part du centre et s'enroule vers l'extérieur, dans le sens horaire, sur un tour et quart de plus en plus large, en 6 s à vitesse constante, puis repart du centre : la seule trajectoire de la catégorie qui grandit en tournant — CSS pur avec offset-path, arrêté au bout de la spirale quand le visiteur limite les animations.

CSSSpiralSVG

Mis à jour le

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

3 exemples d'usage

La coquille de l'escargot — page « Notre élevage » d'un héliciculteur — Spiral Path exemple 1

① La coquille de l'escargot — page « Notre élevage » d'un héliciculteur

QuandLa page « Notre élevage » d'un éleveur d'escargots explique que la coquille grandit depuis sa pointe, tour après tour ; à côté, un escargot dessiné porte une coquille dont la spirale brune est parcourue par un point clair, du centre vers le bord. Encadré : « 2 ans pour qu'un escargot forme sa coquille ».
PourquoiLe mouvement du centre vers l'extérieur suit la croissance de la coquille ; une orbite comme Orbit Circle (fx-0031) tournerait sans grandir.
RéglagesSpirale rendue visible en CSS (stroke: #5b3a1c; stroke-width: 3.2) ; point crème de 13 px cerclé de brun ; coquille et corps dessinés en SVG sous la spirale, aux mêmes coordonnées et centrés sur elle ; scène agrandie de 1,4 par transform: scale().
La montée de l'escalier du phare — page de visite d'un phare — Spiral Path exemple 2

② La montée de l'escalier du phare — page de visite d'un phare

QuandLa page de visite d'un phare montre l'escalier en colimaçon vu d'en haut, marches dessinées en rayons, et un point rouge (le visiteur) qui s'enroule du pied vers la galerie ; encadré « 285 marches, visite à partir de 7 ans ».
PourquoiLa spirale vue d'en haut est l'escalier en colimaçon ; le point qui s'enroule en s'écartant donne la sensation de la montée, mieux qu'une photo de marches.
RéglagesTracé en pointillés blancs à 55 % (stroke-dasharray: 3 3 en CSS) ; point rouge de 12 px cerclé de blanc ; tour en SVG (cercle de pierre, marches obtenues par un cercle épais en pointillés) ; scène agrandie de 1,4.
La pâte qui s'étale sur le billig — page d'une crêperie — Spiral Path exemple 3

③ La pâte qui s'étale sur le billig — page d'une crêperie

QuandLa page « À la commande » d'une crêperie dit « Une louche de pâte, le râteau du centre vers le bord : votre crêpe est prête en 2 minutes » ; à côté, sur un billig noir vu de dessus, une traînée de pâte beige s'enroule du centre vers le bord derrière le râteau.
PourquoiLe geste du râteau à crêpe va du centre vers le bord en tournant : la trajectoire est ce geste, et le trait épais figure la pâte étalée.
RéglagesTrait de 9 px beige à 85 % (stroke-width: 9; stroke-linecap: round) ; point de 14 px couleur pâte cuite, cerclé de brun ; billig en SVG (deux disques sombres et un dégradé de chaleur) ; scène agrandie de 1,4.

Comment ça marche

Haut d'au moins 300 px, sur fond #0a0a0f, .fx-0035-root centre une scène carrée de 260 px, .mp-spiral-scene. Un <svg> la recouvre (viewBox="0 0 260 260", une unité par pixel) et y trace la spirale en cyan à 12 % sur 1,5 px : un repère à peine visible. Huit courbes de Bézier partent de (130, 130), montent vers la droite, bouclent une première fois de près, puis une seconde fois plus au large pour finir en haut à droite, en (210, 70). Longueur : 432 px, dans un rectangle de 120 × 90 px décalé vers le haut et la droite.

Le point cyan de 12 px, auréolé d'un box-shadow, part du coin supérieur gauche de la scène et emprunte ce même dessin, repris tel quel dans son offset-path: path(…) : il ne s'écarte jamais du trait de plus de 0,1 px, dans les trois navigateurs testés. En 6 s, mpOrbit mène son offset-distance de 0 à 100 % en linear, soit environ 72 px par seconde du cœur au tour extérieur. Au bout, il réapparaît au centre et recommence : le tracé est ouvert et ne revient pas à son départ.

Ni JavaScript ni id : chaque copie du bloc sur une page tourne pour elle-même. Lorsque le visiteur limite les animations, une media query restreinte à .fx-0035-root supprime l'animation et laisse le point sur le tour extérieur, au bout de la spirale (offset-distance: 100%) : l'image fixe montre où mène le mouvement.

Accessibilité

  • Animations limitées : avec prefers-reduced-motion: reduce, le point se fige au bout de la spirale. Vérifié dans Chromium, Firefox et WebKit : aucune animation active, aucun pixel modifié pendant 800 ms.
  • Tracé peu visible : la spirale en cyan à 12 % se devine à peine sur le fond sombre ; seul le point se voit franchement. Si la forme de la spirale porte le sens (une coquille, un escalier), donnez-lui de l'épaisseur et du contraste, comme dans les exemples.
  • Saut au centre : à chaque tour, le point disparaît du bout de la spirale et réapparaît au centre. Ce saut est net mais rare (toutes les 6 s) ; il n'y a aucun clignotement.
  • Rien à cliquer : ni la souris, ni le doigt, ni le clavier n'agissent sur la spirale. Si le texte voisin dit l'essentiel, masquez la racine aux lecteurs d'écran avec aria-hidden="true".

Compatibilité navigateur

CSS pur : offset-path: path(), offset-distance animé, SVG en ligne pour le tracé. Aucune dépendance, aucun JavaScript. Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : point centré sur la ligne (écart inférieur à 0,1 px), même durée, arrêt sous mouvement réduit, deux copies indépendantes.

Chrome 55+✓ Complet
Firefox 72+✓ Complet
Safari 16+✓ Complet (mesuré sur WebKit 26.5)
Edge 79+✓ Complet
Mobile iOS 16+✓ Complet
Android Chrome✓ Complet

Sans offset-path (Safari avant 16), le point reste immobile dans le coin haut gauche de la scène et la spirale s'affiche seule (mesuré en retirant la propriété). @supports not (offset-path: path("M 0 0")) permet de le masquer.

Le code

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

index.html — structure
<div class="fx-0035-root">
  <div class="mp-spiral-scene">                    <!-- 260 × 260 px -->
    <svg viewBox="0 0 260 260" fill="none">
      <path d="M130,130 C130,110 150,90 160,80 … C165,50 195,55 210,70" …></path>
    </svg>
    <div class="mp-spiral-dot"></div>      <!-- même tracé dans offset-path -->
  </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
Durée (CSS — 6s dans animation) 6 s Plus long, le point s'enroule plus calmement ; le saut au centre devient plus rare.
Tracé (HTML + CSS — attribut d et offset-path) un tour et quart, de (130, 130) à (210, 70) Écrivez la même spirale aux deux endroits, dans le repère de 260 × 260 px. Pour une spirale centrée ou plus régulière, un générateur de spirale en SVG donne un d à recopier tel quel dans path("…").
Visibilité du tracé (CSS — .mp-spiral-scene path { stroke: …; stroke-width: … }) cyan à 12 %, 1,5 px La règle CSS l'emporte sur les attributs du SVG : 3 à 9 px et une couleur franche font de la spirale un dessin (coquille, pâte).
Agrandir (CSS — transform: scale() sur .mp-spiral-scene) aucun offset-path est en pixels : un scale() agrandit ligne et trajectoire ensemble.
Sens (CSS — reverse dans animation) du centre vers l'extérieur Avec reverse, le point part du bout et s'enroule vers le centre : un tourbillon qui aspire, une vidange.
Couleur (CSS — background et box-shadow de .mp-spiral-dot) cyan #06b6d4 Le halo est un box-shadow de 12 px de la même teinte à 60 % : changez les deux ensemble.

FAQ

Non : c'est un tour et quart dessiné à la main en huit courbes de Bézier, un petit tour serré puis un tour large, et il n'est pas centré dans la scène (il occupe 120 × 90 px un peu au-dessus et à droite du milieu). Cela suffit pour lire « ça grandit en tournant ». Si vous voulez une spirale d'Archimède parfaite avec plusieurs tours, remplacez le tracé aux deux endroits ; le reste du code n'a pas à changer.
L'animation va de 0 à 100 % puis recommence à 0 : sur un tracé ouvert, le départ et l'arrivée ne sont pas au même endroit. Pour un mouvement sans saut, ajoutez alternate à l'animation : le point repart en arrière, du bord vers le centre, avant de ressortir.
Infinity Loop parcourt un huit fermé qui repasse toujours par le même point, à vitesse constante et sans fin : c'est un mouvement qui tient sa trajectoire. Spiral Path s'éloigne du centre à chaque instant puis recommence : c'est un mouvement qui grandit, une croissance ou une montée.