Curseurs Custom & Effets Souris
Curseurs custom, interactions magnétiques, trails et effets de lumière.
Mis à jour le
Qu'est-ce qu'un curseur personnalisé, et quand l'utiliser ?
Un curseur personnalisé remplace ou habille le pointeur par défaut avec un élément qui suit la souris. On l'obtient en masquant le curseur natif avec cursor: none, en déplaçant un élément positionné sur l'événement pointermove, et en lissant son mouvement par interpolation linéaire dans une boucle requestAnimationFrame.
Comment choisir, performances et accessibilité
- Les curseurs personnalisés conviennent aux portfolios créatifs, aux agences et aux lancements de produit, où Magnetic Effect, Spotlight Reveal ou Cursor Trail renforcent la marque ; ils apportent peu à une documentation ou à une page de paiement.
- Ne les activez que sur les appareils à pointeur précis (
@media (pointer: fine)), gardez le curseur texte natif dans les champs de formulaire et respectezprefers-reduced-motion. - Dot Follower est gratuit avec son code complet ; les autres curseurs de la page sont inclus dans Premium.
Voir le code source
<div class="custom-cursor cursor-dot" id="cursorDot"></div>
<div class="custom-cursor cursor-ring" id="cursorRing"></div>
<div class="cursor-zone" id="zone-dot">
Survolez cette zone
<span class="info-text">Curseur point + anneau</span>
</div>.custom-cursor {
position: fixed;
pointer-events: none;
z-index: 9999;
display: none
}
.cursor-dot {
width: 8px;
height: 8px;
background: #6366f1;
border-radius: 50%
}
.cursor-ring {
width: 40px;
height: 40px;
border: 2px solid #6366f1;
border-radius: 50%;
transition: all .15s ease-out
}
.cursor-zone {
/* Ces variables venaient du design system du SITE : chez l'acheteur
elles n'existent pas, le fond disparaissait et les coins devenaient carres.
Scopees ici, elles cascadent sans polluer sa page. */
--bg-elevated: #1a1a24;
--radius-xl: 1rem;
--space-4: 1rem;
--text-muted: #8b8b93;
--text-secondary: #a1a1aa;
width: 100%;
height: 300px;
background: var(--bg-elevated);
border-radius: var(--radius-xl);
display: flex;
align-items: center;
justify-content: center;
font-weight: 600;
color: var(--text-secondary);
position: relative;
overflow: hidden;
}
.info-text {
position: absolute;
bottom: var(--space-4);
left: 50%;
transform: translateX(-50%);
font-size: 0.875rem;
color: var(--text-muted);
}
/* Le JS pose cette classe au survol d'une cible : sans regle, le curseur
natif restait visible par-dessus le curseur personnalise. */
.cursor-active {
cursor: none
}// Zone 1: Dot Follower
(function(){
const zoneDot = document.getElementById('zone-dot');
if (!zoneDot) return;
const cursorDot = document.getElementById('cursorDot');
const cursorRing = document.getElementById('cursorRing');
if (!cursorDot || !cursorRing) return;
let ringX = 0, ringY = 0;
let dotX = 0, dotY = 0;
zoneDot.addEventListener('mouseenter', () => {
zoneDot.classList.add('cursor-active');
cursorDot.style.display = 'block';
cursorRing.style.display = 'block';
});
zoneDot.addEventListener('mouseleave', () => {
zoneDot.classList.remove('cursor-active');
cursorDot.style.display = 'none';
cursorRing.style.display = 'none';
});
zoneDot.addEventListener('mousemove', (e) => {
dotX = e.clientX;
dotY = e.clientY;
cursorDot.style.left = dotX - 4 + 'px';
cursorDot.style.top = dotY - 4 + 'px';
});
function animateRing() {
ringX += (dotX - ringX) * 0.15;
ringY += (dotY - ringY) * 0.15;
cursorRing.style.left = ringX - 20 + 'px';
cursorRing.style.top = ringY - 20 + 'px';
requestAnimationFrame(animateRing);
}
animateRing();
})();Custom Circle Cursor
Curseur cercle avec effet de contraste et agrandissement au survol.
Page de l’effet →Cursor Text Reveal
Le curseur révèle le texte avec un effet de clip-path circulaire.
Page de l’effet →Magnetic Elements
Les éléments se déplacent vers le curseur quand il est proche, avec un retour élastique.
Page de l’effet →Cursor Spotlight
Un halo de lumière suit le curseur et révèle le contenu caché sous un voile sombre.
Page de l’effet →Trail Particles
Le curseur laisse une traînée de particules lumineuses qui s'estompent avec la physique.
Page de l’effet →Cursor Ripple Field
Le mouvement du curseur crée des cercles qui s'étendent comme des gouttes de pluie.
Page de l’effet →Custom Cursor States
Le curseur change de forme selon le contexte : cercle, losange ou cercle en pointillés.
Page de l’effet →Cursor Tilt Effect
La carte s'incline en 3D vers la position du curseur avec un reflet lumineux dynamique.
Page de l’effet →Cursor Text Scramble
Le texte proche du curseur se brouille puis se reconstitue progressivement.
Page de l’effet →Elastic Cursor
Un curseur personnalisé qui s'étire dans la direction du mouvement et rebondit à l'arrêt.
Page de l’effet →Cursor Color Sampler
Le curseur capte la couleur de la zone survolée et l'utilise comme halo lumineux.
Page de l’effet →Gravity Well Cursor
Les particules proches du curseur sont repoussées, créant un champ de distorsion autour du pointeur.
Page de l’effet →Jack-o'-Lantern Cursor
Curseur tête de citrouille qui sème une traînée de petites citrouilles s'estompant rapidement. Ludique, immersif, 100% canvas (aucun modèle ni image externe).
💡 Idéal pour : page/landing Halloween, jeu-concours saisonnier, easter-egg, header d'événement, page enfants.
Séance Cursor
Planche Ouija interactive : la planchette suit le curseur, les lettres proches s'embrasent et un fil spectral trace le message. Mystique, immersif, parfait pour Halloween.
💡 Idéal pour : hero/landing Halloween, easter-egg de page, quiz/jeu interactif, page 404 « hantée », teaser événement.