Back navigation iconCrafts

Expanding Carousel Indicator

A CSS-only carousel whose native marker expands continuously with the scrolling item.

Category
Navigation
Year
2026
Status
Experiment
Dinil Thilakarathne

CSS carousel micro-interactions

Drag, scroll, or use the controls to explore

What it is

A small control that carries both carousel position and navigation.

The indicator represents every item as a native CSS scroll marker. Each slide defines an inline view timeline, and that timeline continuously expands and contracts its marker as the slide travels through the scrollport.

Swiping the carousel updates the indicator, and choosing any segment moves directly to that item. This makes the control useful feedback rather than a passive page count.

Design decisions

How the indicator stays clear, responsive, and accessible.

Width communicates selection

The active segment grows horizontally while inactive segments remain small. The change is visible at a glance without adding labels or a second progress treatment.

Scroll is the timeline

Marker growth is bound directly to the corresponding slide's view progress. There is no JavaScript scroll listener and no duplicated active-index state to synchronize.

Native carousel controls

Supporting browsers create the clickable markers, keyboard behavior, and previous and next controls. The controls remain connected to the browser's own scroll and snap state.

Small visual, generous target

Each visible segment sits inside a larger button. The control stays visually compact while preserving comfortable pointer and keyboard interaction.

Progressive enhancement

The base experience is a draggable, touch-friendly scroll-snap gallery. Browsers that support CSS carousel primitives enhance it with animated markers and navigation buttons.

Reference

The platform primitives behind the interaction.

Continue exploring

Another compact selector built around spatial continuity.