Skip to content
MotionLab

Fluid Cursor & Hover Traps

A lagging cursor blob that stretches with velocity and snaps into “trap” targets.

★ showcaseMotion

How it works

Pointer → springs for x/y; velocity (useVelocity) drives scaleX and rotation so the blob smears in the direction of travel. Traps override the target with the element rect.

Performance

Pointer/drag values live in MotionValues — they update the DOM directly and never trigger a React render. Hidden automatically on touch devices (pointer: coarse).

Accessibility & reduced motion

The native cursor stays visible; the blob is decorative (aria-hidden).

Playgroundspring
settle 0.51sovershoot 5%ζ 1.06

Export
transition={{ type: 'spring', stiffness: 350, damping: 28, mass: 0.5 }}