Grab the strip and throw it — it keeps going on its own momentum and eases to a stop. The faster it moves, the more the tiles skew: that lean is what gives the scroll weight, without it a carousel just feels dead.
Wheel and trackpad work too, and the strip drifts on its own when left alone. Loops seamlessly — the band closes on itself pixel for pixel, no jump when a tile wraps around.
Drop it in with no images and it runs on colour tiles, so you can feel the motion before your visuals are ready. Everything is time-based, not frame-based, so it feels identical at 60 and 144 Hz.
DOM and requestAnimationFrame, no dependencies, nothing loaded from outside. Honours prefers-reduced-motion, and freezes on a still frame inside the Framer canvas.
Grab the strip and throw it — it keeps going on its own momentum and eases to a stop. The faster it moves, the more the tiles skew: that lean is what gives the scroll weight, without it a carousel just feels dead.
Wheel and trackpad work too, and the strip drifts on its own when left alone. Loops seamlessly — the band closes on itself pixel for pixel, no jump when a tile wraps around.
Drop it in with no images and it runs on colour tiles, so you can feel the motion before your visuals are ready. Everything is time-based, not frame-based, so it feels identical at 60 and 144 Hz.
DOM and requestAnimationFrame, no dependencies, nothing loaded from outside. Honours prefers-reduced-motion, and freezes on a still frame inside the Framer canvas.