Vanilla MotionVanilla Motion

Horizontal Sticky Stack

css-animationsscrollsticky

Built with CSS Animations

A scroll-driven layout where cards pin in place and stack horizontally as the user scrolls down. This pattern creates a sense of depth and sequence, commonly used for feature showcases and product walkthroughs.

What makes this tutorial special: everything is pure CSS using animation-* — no JavaScript at all. Note that scroll-driven animations are not supported on Firefox at the time of this writing.

Step 1: The first stack

My approach for complex layouts always starts with the static layout and a proper box model first.

MobileDesktop
Open Demo

Step 2: Static, responsive layout

Then proceed with the complete layout for both desktop and mobile. No need to put 100% effort into this step — it’s just a prep so we have in mind how the mobile layout will look.

At this step, since we are aware that there’s animation to apply, be a bit more generous with HTML elements — allow more wrappers, each handling a specific purpose. One wrapper for sticky, one for sizing with width and height, one for transform. This helps avoid CSS conflicts in the animation steps.

MobileDesktop
Open Demo

Step 3: Sticky

Here comes the fun part. Implement the animation once the static layout is ready.

MobileDesktop
Open Demo

More tutorials

Ripple Reveal WebGL

Ripple Reveal WebGL

motionwebglglslanimation
Ripple Reveal

Ripple Reveal

motioncsscss-maskanimation
Venetian Blind

Venetian Blind

motioncsscss-maskanimation