3D✨ Premium

SVG Path Follow

Un point violet lumineux fait l'aller-retour sur une courbe en S tracée en pointillés, en ralentissant à chaque bout, suivi de deux échos plus petits et plus pâles à 0,15 s et 0,3 s : une traînée fantôme qui se resserre aux arrêts et s'étire en pleine vitesse — CSS pur avec offset-path, figée en pleine course si l'utilisateur réduit les animations.

CSSSVGTrail

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

Le bac qui traverse la Loire — horaires d'une navette fluviale — SVG Path Follow exemple 1

① Le bac qui traverse la Loire — horaires d'une navette fluviale

QuandLa page du bac affiche « Traversée 6 min, départ toutes les 20 min » ; sous le titre, la Loire coule entre deux rives et le bac jaune va d'un ponton à l'autre, ralentit à l'accostage et repart.
PourquoiL'aller-retour sans fin, ralenti aux pontons, est le rythme même du bac ; la traînée derrière lui figure le sillage, sans dessin animé à charger.
RéglagesScène de 300 × 200 agrandie de 1,4 par transform: scale(), posée sur un décor SVG dans le même repère (rives, fleuve, pontons aux deux extrémités du tracé) ; courbe en blanc à 75 % ; point jaune #facc15 cerclé de sombre ; échos blancs.
Le chien de berger qui ramène le troupeau — page d'un concours de chiens de troupeau — SVG Path Follow exemple 2

② Le chien de berger qui ramène le troupeau — page d'un concours de chiens de troupeau

QuandPour la finale régionale du dimanche 14 h, la page montre une prairie : l'enclos d'un côté, le troupeau de l'autre, et le chien noir et blanc qui fait la navette entre les deux à toute allure.
PourquoiLa traînée qui s'étire en pleine vitesse rend la vivacité du chien ; un point seul, comme celui de Path Drawing (fx-0039), n'aurait pas cet élan.
RéglagesPoint de 16 px en dégradé noir et blanc avec un liseré blanc ; échos gris foncé ; courbe vert sombre à 35 % sur un fond de prairie ; décor SVG (enclos, moutons) dans le repère de la scène, agrandie de 1,5.
La ronde du veilleur sur le chemin de ronde — visite nocturne d'un château fort — SVG Path Follow exemple 3

③ La ronde du veilleur sur le chemin de ronde — visite nocturne d'un château fort

QuandL'annonce des visites aux flambeaux des samedis d'août montre le chemin de ronde de nuit entre la tour nord et le donjon ; une lueur de lanterne passe et repasse de l'une à l'autre.
PourquoiL'aller-retour d'une tour à l'autre, avec un halo qui traîne derrière, évoque la lanterne du veilleur ; le ralenti aux tours ressemble à l'arrêt du garde à chaque poste.
RéglagesPoint de 14 px en dégradé crème vers ambre avec un large box-shadow doré ; échos ambrés avec leur propre halo ; courbe ambre à 35 % posée sur le chemin de ronde dessiné en SVG ; scène agrandie de 1,4.

Comment ça marche

Le bloc .fx-0032-root fait au moins 300 px de haut, fond #0a0a0f. Il centre .mp-pathfollow-scene, une scène de 300 × 200 px qui contient deux choses : un <svg> de même taille (viewBox="0 0 300 200", donc 1 unité = 1 px) qui dessine la courbe en S en pointillés violets à 15 % (stroke-dasharray="6 4"), et trois ronds en position: absolute posés en haut à gauche de la scène : le point de 18 px et deux échos de 10 px, à 60 % et 30 % d'opacité.

Les trois ronds partagent la même trajectoire, offset-path: path("M 20 100 C 80 20 150 180 220 80 C 260 20 280 100 280 100"), copie exacte du tracé du SVG. Comme les coordonnées de path() se lisent en pixels depuis le coin de la scène, et que le SVG a la même taille que la scène, le centre du point passe exactement sur la ligne pointillée (mesuré : moins de 0,1 px d'écart dans Chromium, Firefox et WebKit). L'animation mpOrbit fait varier offset-distance de 0 à 100 % en 3 s, en ease-in-out et en alternate : 3 s à l'aller, 3 s au retour, lent aux deux bouts, rapide au milieu de la courbe (321 px de long).

Les échos ont la même animation avec un délai négatif : -5.85s et -5.7s. Un aller-retour complet dure 6 s ; démarrer 5,85 s « en avance » revient à être 0,15 s en retard, sans attendre au départ. Les échos suivent donc le point dans les deux sens. Comme ils sont décalés dans le temps et non dans l'espace, ils se tassent contre le point quand il ralentit et s'étirent quand il file (environ 25 px d'écart en pleine vitesse). Sous prefers-reduced-motion: reduce, un bloc limité à .fx-0032-root arrête tout et pose le point à 62 % de la courbe, les échos à 57 et 52 %, juste derrière lui.

Accessibilité

  • Mouvement réduit : sous prefers-reduced-motion: reduce, le point et ses deux échos s'arrêtent au milieu de la courbe, dans l'ordre de la course : on lit encore le sens du trajet. Mesuré dans Chromium, Firefox et WebKit : 0 animation en cours, 0 % des pixels changent en 800 ms.
  • Contenu décoratif : aucun texte dans l'effet. S'il illustre un trajet (un bac, un parcours), écrivez les horaires ou la distance en texte à côté et mettez aria-hidden="true" sur la racine.
  • Contraste de la courbe : le pointillé violet à 15 % est un simple guide. Si le trajet est l'information, montez son opacité (exemple 1 : blanc à 75 % sur l'eau) ; le point, lui, ressort sur tous les fonds sombres.
  • Aucune interaction : l'effet ne réagit ni à la souris, ni au doigt, ni au clavier.

Compatibilité navigateur

CSS pur : offset-path: path(), offset-distance animé, animation-delay négatif, SVG en ligne pour la courbe. 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), échos derrière le point à l'aller comme au retour, arrêt sous mouvement réduit, deux copies indépendantes sur la page.

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), la courbe en pointillés s'affiche, mais le point et ses échos restent empilés, immobiles, dans le coin haut gauche de la scène (mesuré en retirant la propriété). Si ce public compte, masquez-les avec @supports not (offset-path: path("M 0 0")).

Le code

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

index.html — structure
<div class="fx-0032-root">
  <div class="mp-pathfollow-scene">                 <!-- 300 × 200 px -->
    <svg viewBox="0 0 300 200" fill="none">
      <path d="M20,100 C80,20 150,180 220,80 C260,20 280,100 280,100" … stroke-dasharray="6 4"></path>
    </svg>
    <div class="mp-pathfollow-trail mp-pathfollow-trail--2"></div>  <!-- 0,3 s de retard -->
    <div class="mp-pathfollow-trail mp-pathfollow-trail--1"></div>  <!-- 0,15 s de retard -->
    <div class="mp-pathfollow-dot"></div>
  </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
Tracé (HTML + CSS — attribut d du <path> et offset-path) courbe en S de (20, 100) à (280, 100) Écrivez le même tracé aux deux endroits, en coordonnées de la scène de 300 × 200 px. Si vous changez la taille de la scène, changez le viewBox du SVG à l'identique, sinon la ligne et le point se séparent.
Agrandir (CSS — transform: scale() sur .mp-pathfollow-scene) aucun offset-path est en pixels : changer seulement la largeur de la scène étirerait la ligne SVG mais pas la trajectoire. Un scale(1.5) agrandit les deux ensemble.
Durée (CSS — 3s dans animation) 3 s par trajet Si vous la changez, recalculez les délais des échos : délai = -(2 × durée - retard). Pour 4 s et 0,15 s de retard : -7.85s.
Écart des échos (CSS — animation-delay de .mp-pathfollow-trail--1 et --2) -5.85s et -5.7s (0,15 et 0,3 s de retard) -5.7s et -5.4s doublent la traînée (0,3 et 0,6 s). Pour un aller simple sans retour, retirez alternate : un cycle dure alors 3 s et les délais deviennent -2.85s et -2.7s.
Rythme (CSS — ease-in-out dans animation) ralenti aux deux bouts linear donne une vitesse constante : les échos restent alors à distance égale du point tout le long.
Couleurs (CSS — background, box-shadow ; SVG — stroke) violet #8b5cf6, échos violet à 30 % La couleur de la ligne se règle aussi en CSS : .mp-pathfollow-scene path { stroke: … } l'emporte sur l'attribut.

FAQ

Un délai positif ferait attendre l'écho 0,15 s au départ de la courbe avant de bouger : au chargement, on verrait le point partir seul. Un délai négatif démarre l'animation déjà commencée. Comme un aller-retour dure 6 s, être 5,85 s en avance revient exactement à être 0,15 s en retard, et ce dès la première image. Écrire -0.15s mettrait l'écho devant le point.
Path Drawing dessine le trait au passage du point : la ligne naît et s'efface, c'est un tracé en train de se faire (un vol, une trace GPS, une lettre). Ici la courbe est déjà là, en pointillés, et le point fait la navette dessus avec sa traînée : c'est un va-et-vient sur un trajet connu (un bac, une navette, un chien qui court).
Oui : offset-rotate vaut auto par défaut, le point s'oriente selon la courbe. Sur un rond, ça ne se voit pas. Si vous remplacez le point par une icône (un bateau, une flèche), elle suivra les virages ; ajoutez offset-rotate: 0deg pour la garder droite.