Hover✨ Premium

Magnetic Field

Cent particules convergent en ligne droite vers un noyau central qui suit la souris : quand une particule l'atteint (< 30 px), elle respawne à une position aléatoire et reprend sa trajectoire. Un champ en mouvement permanent, sans pause ni état de repos.

JSMagneticParticles

Mis à jour le

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

3 exemples d'usage

Fond hero — startup de cybersécurité — Magnetic Field exemple 1

① Fond hero — startup de cybersécurité

QuandLe visiteur arrive sur la page d'accueil de Cindral ; cent particules vertes (paquets réseau) convergent vers le noyau qui suit sa souris (pare-feu). Il déplace naturellement le curseur en lisant, ce qui crée une impression de contrôle sur les menaces.
PourquoiL'effet illustre directement la promesse produit — le pare-feu absorbe les menaces avant qu'elles atteignent leur cible. Le visiteur vit la métaphore avant de lire le texte, ce qui rend l'accroche immédiatement compréhensible.
RéglagesRacine en position absolute inset:0, fond transparent, z-index:1. Champ height:360px. Particules vertes (#22c55e), noyau en dégradé vert sécurité. Overlay texte z-index:10 avec gradient opaque en haut.
Indicateur de traitement IA — carte de tableau de bord — Magnetic Field exemple 2

② Indicateur de traitement IA — carte de tableau de bord

QuandDans le SaaS d'analyse, une carte affiche « Analyse IA en cours ». L'orbe animé (160 × 160 px) remplace le spinner classique : le noyau reste centré au repos, et les particules convergent indéfiniment vers lui sans interaction souris.
PourquoiUn spinner rotatif générique signale l'attente sans évoquer un traitement IA. L'orbe à convergence permanente illustre le flux de données analysées par le modèle, ce qui rend l'état de traitement plus lisible et plus cohérent avec le produit.
RéglagesRacine 160 × 160 px. Champ .mf383-field 160 × 160 px. Noyau .mf383-core 28 px (overridé depuis 60 px). Le curseur n'entre jamais dans le champ : le noyau reste centré et les particules boucient automatiquement.
Jeu de défense réseau — Orrath — Magnetic Field exemple 3

③ Jeu de défense réseau — Orrath

QuandDans le mini-jeu Orrath, le joueur déplace le curseur pour positionner son pare-feu (noyau bleu) et absorber les paquets-attaques entrants (particules orange). La mécanique est immédiatement lisible : les particules se téléportent en arrivant au noyau, ce qui simule leur neutralisation.
PourquoiLa physique de l'effet correspond parfaitement à la mécanique de jeu : les particules convergent naturellement vers le noyau sans que le code du jeu ait besoin de les piloter. Le joueur n'a qu'à déplacer le curseur pour « être » le pare-feu.
RéglagesZone de jeu occupant la section moins les barres UI (top:44px, bottom:50px). Particules orange (#fb923c, 5 × 5 px), noyau bleu (#2563eb). Barre supérieure : logo, score, timer.

Comment ça marche

Le noyau (div.mf383-core) est positionné en absolu dans la zone .mf383-field. Sa position cible est mise à jour à chaque événement mousemove (ou touchmove) ; à chaque image, il avance de 8 % de l'écart restant (lerp avec facteur 0,08 × f), ce qui lui donne un mouvement fluide en inertie.

Les 100 particules (div.mf383-particle) sont créées au chargement avec des positions et des vitesses initiales aléatoires. À chaque image, chaque particule est attirée vers le noyau : vx += (cx − px) × 0.03 × f ; vy += (cy − py) × 0.03 × f. Les vitesses sont amorties (vx *= 0.95^f). Quand la particule est à moins de 20 px du noyau, elle respawne aléatoirement dans la zone. Sous mouvement réduit, les particules sont réparties en anneau fixe autour du centre et ne bougent pas.

Accessibilité

  • Toucher : touchmove déplace le noyau vers le doigt. L'interaction est identique à la souris.
  • Clavier : l'effet est purement décoratif et ne réagit pas au clavier. Aucune information n'est réservée à la souris.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, les particules sont placées en anneau fixe autour du centre, visibles et lisibles, sans aucune animation.
  • Pas de rôle ARIA : la zone .mf383-field n'a pas de rôle. Si elle illustre un concept (un logo, un titre), ajoutez le contenu textuel à côté et aria-hidden="true" sur la zone.

Compatibilité navigateur

DOM pur et CSS, aucune dépendance. IntersectionObserver disponible depuis Chrome 51, Firefox 55, Safari 12.1. Physique par requestAnimationFrame normalisée sur le temps écoulé. 100 divs animés : coût mesuré < 1 ms/image dans Chromium sur machine de bureau. Non vérifié sur Safari réel ; attendu complet.

Chrome 51+✓ Complet (mesuré)
Firefox 55+✓ Complet (mesuré)
Safari 12.1+✓ Attendu complet (non mesuré)
Edge 79+✓ Complet (mesuré)
Mobile iOS 12.2+✓ Complet au toucher (non mesuré)
Android Chrome 51+✓ Complet au toucher (non mesuré)

Sans JavaScript, la zone affiche uniquement le noyau central fixe, les particules ne sont pas créées.

Le code

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

index.html — structure
<div class="fx-0383-root">
  <div class="mf383-field">
    <div class="mf383-core"></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
Nombre de particules (JS — constante COUNT) 100 50 donne un effet plus aéré ; 200 un nuage dense. Au-delà de 150, vérifiez la performance sur mobile.
Force d'attraction (JS — vx += ... * 0.03 * f) 0,03 0,06 rapproche les particules très vite du noyau ; 0,01 donne des trajectoires longues et elliptiques.
Amortissement (JS — vx *= Math.pow(0.95, f)) 0,95 0,98 donne des vitesses plus élevées et une orbite plus chaotique ; 0,8 des particules qui s'arrêtent presque aussitôt et replongent.
Taille du noyau (CSS — .mf383-core { width, height }) 60 px Adaptez aussi le seuil de respawn (dist < 20) à la moitié du nouveau rayon.
Couleur des particules (CSS — .mf383-particle { background }) #6366f1 Pour des couleurs par particule, assignez la couleur depuis le JS lors de la création.

FAQ

Non. Chaque particule a une vélocité initiale aléatoire ; leur amortissement et leur distance au noyau en font des trajectoires toutes différentes. Certaines spiralent en cercles larges, d'autres plongent directement vers le noyau.
Le noyau reste à sa dernière position dans la zone, et les particules continuent d'orbiter vers lui. L'effet ne se réinitialise pas au départ de la souris.
Oui. Le noyau est un div avec border-radius: 50%. Retirez-le pour un carré ; ou ajoutez un SVG, une image ou du texte à l'intérieur. Le positionnement et le déplacement sont gérés par les propriétés left et top en JavaScript.