Skip to content

CSS Scroll & Sticky Effects

Custom scrollbars, scroll-snap rails, reading-progress bars, sticky headers and reveal-on-scroll.

31 effectsFree for personal useNo JavaScript

Scrollable list with a slim ocean gradient thumb — styled for both WebKit and Firefox.

Horizontal ocean card rail that snaps each tile to the left edge, scrollbar hidden.

Sticky ocean progress bar driven by scroll-timeline — it tracks the scroll with no listener.

Grouped list whose ocean date headers stick and blur the rows sliding beneath them.

Cards that fade and rise as they enter the scrollport, using view() — falls back to a plain fade-in.

Overflowing chip row masked to fade at both edges so it reads as scrollable without a scrollbar.

Snap-scrolling pane beside an ocean dot rail that marks the section you're on.

Progress thumb riding a sticky rail beside scrolling copy, hiding the native scrollbar so the rail is the only indicator.

Floating return control pinned with `position: sticky` inside the scroller, so it needs no fixed positioning and no scroll listener.

Progress rail stuck to the top of its own scroller, scaled rather than resized so the indicator animates without triggering layout.

List whose last child is a loading marker rather than a button, positioned so it enters the viewport a little before the content runs out and the next page can be fetched.

Overflow cue as a tinted shadow at whichever edge still has content past it, which survives a patterned backdrop where a fade-to-transparent mask would not.

Vertical scroll box that snaps hard between full-height page panels, one section per scroll.

Order summary pinned to the top of its column while the list beside it scrolls past, staying in reach the whole way down.

Data grid frozen on both axes at once — the header row sticks to the top, the metric column sticks to the left, and the corner cell carries both offsets with a higher stacking order so it never slips under either.

Price and action pinned to the top of a scrolling pane with negative margins cancelling the padding, so the blur runs edge to edge.

Horizontal rail with `scroll-snap-align: center`, so tiles settle centred rather than flush left and the row never stops half-way.

Document outline pinned beside scrolling body copy, the active entry marked by a coloured left rule so the position reads without a filled background.

Content sheet dragged down past its own top edge to expose a spinner parked behind it, the indicator scaling up from the gap rather than being pushed along by the sheet.

Masthead that gives back two thirds of its height as the page moves under it — logo, wordmark and nav each shedding at their own rate rather than scaling as a block.

Chat thread scroller where each day divider pill sticks to the top until the next day pushes it away.

Unread-messages rule in a chat log that pins to the top of the scroller so the boundary stays visible while you read past it.

Three ridge layers and a sun pinned behind the copy, each one driven by the scroller’s own scroll timeline at a different rate, so the near ridge travels five times further than the far one as the article moves over them.

Vertical picker wheel that snaps each value into a highlighted centre band with faded edges above and below.

Horizontal card rail with a slim gradient scrollbar of its own beneath it, sized to the rail rather than the page.

Steps that clamp to four staggered bottom offsets, so at rest they sit piled at the foot of the scroller with twenty pixels of each showing and peel away one by one as the list scrolls past them.

Scrollable line-item list whose total row stays pinned to the bottom edge while the items scroll beneath it.

Article layout where the image sticks to the top of the viewport while the copy alongside it keeps scrolling.

Delivery tracker whose spine fills from the scroller’s own scroll timeline while each milestone dot lights on its own view timeline as it crosses the dashed read line pinned across the pane.

Scroll box whose background tints from cool blue to warm rose as you scroll, driven purely by a scroll timeline.

Horizontal snap rail where each card scales up and brightens as it passes the centre, driven by a view timeline.

Other categories