Skip to content
animorio
IT
Back to the library

Rolling list drum

A list rolling through a fixed band: the item in the middle is solid, the others fade, and a diamond turns a quarter at every item.

Scroll, TextGSAPEasyLifetime

Scroll inside the preview

The code

A folder that runs on its own: index.html, style.css, script.js and the libraries from a CDN.

The code for this animation is part of lifetime access.

The preview stays open: watch it, slow it down, try it on your phone.

Lifetime access

What it does

The scene holds still while you scroll. Inside, a list rises slowly as on a machine drum: the item crossing the central band is solid, those above and below dim with distance and vanish at the edges. Next to it, a diamond turns a quarter of a turn for each item.

How it works

A scene that holds still

The .corsa container is four screens tall; inside, .palco is sticky and one screen tall. No ScrollTrigger pin: with sticky the layout stays simple.

A rolling index

Scroll moves k from 0 to n - 1. The integer part is the item in the middle, the fraction tells how close the next one is.

The list moves

The item centres are measured; the script interpolates between the current and the next one and shifts the list until that point sits on the bright band.

Light by distance

Every item gets an opacity that drops with its distance from the centre, never below SPENTO. The CSS mask (mask-image with a gradient) handles the edges.

Values to change

NameFileDefaultWhat it changes
CENTROscript.js0.5Where the bright band sits. If you move it, move the mask stops in style.css too.
SPENTO / CADUTAscript.js0.14 / 0.85Minimum opacity and how quickly items dim as they move away.
GIROscript.js90Degrees of diamond rotation per item. Zero stops it.
.corsa heightstyle.css420vhThe scroll length.

When to use it

For short lists meant to be read one item at a time: services, steps, principles. Beyond twelve items it becomes a long scroll.

On phones

The title and diamond move to the top, the list below; the font size adapts to the width.

With reduced motion

No fixed scene: the list is a normal list and every item is solid.

Pitfalls

  • Measure the centres after document.fonts.ready: with the fallback font the line heights differ.
  • Long items must not wrap (white-space: nowrap), or the centres stop being regular.
  • mask-image on Safari still wants the -webkit- prefix.

Libraries

GSAP 3.15.0, ScrollTrigger 3.15.0, Mona Sans (font variabile) 5.3.0.

Weight: 6.0 KB of our own files.

Testing

Tested on 26 September 2026

  • Desktop: Done
  • Phone: Done
  • Reduced motion: Done
  • Safari on iPhone: Done

License

Use it in your own projects and in your clients’ projects. Do not resell it or redistribute it as is. GSAP stays under its own Standard license. Full license.

All animations