Toggle Sidebar B
AppearanceLight & dark mode D

Infinite Spiral

An endlessly looping 3D helix of images with customizable motion, depth, spacing and interaction.

Default

Pick an animation mode to drive the spiral by itself, by dragging, by page scroll, or all three. Every prop is wired to the controls underneath.

Light previewReplay previewOpen in new tab
Photograph 1 by Eugene Golovesov
Photograph 2 by Eugene Golovesov
Photograph 3 by Eugene Golovesov
Photograph 4 by Eugene Golovesov
Photograph 5 by Eugene Golovesov
Photograph 6 by Eugene Golovesov
Photograph 7 by Eugene Golovesov
Photograph 8 by Eugene Golovesov
Photograph 9 by Eugene Golovesov
Photograph 10 by Eugene Golovesov

Customize

Animation Mode
Direction
Image Fit
Grayscale1
Speed0.55
Radius170px
Card Width100px
Card Height100px
Spacing60px
Perspective1000px
Cards Per Turn7
Rotation0deg
Card Tilt0deg
Corner Radius10px
Center Scale1.2
Edge Fade0.3
Edge Blur6px

API Reference

InfiniteSpiral

PropTypeDefaultDescription
items(string | SpiralItem)[][]Images shown in the spiral. Objects may also include alt, href, target, label and id.
speednumber0.55Automatic travel speed in cards per second and the sensitivity of scroll-controlled motion.
direction"up" | "down""up"Vertical travel direction.
animationMode"auto" | "drag" | "scroll" | "all""auto"Selects automatic motion, pointer dragging, page-scroll control or all interactions.
radiusnumber170Depth radius of the helix in pixels.
cardWidthnumber100Card width in pixels.
cardHeightnumber100Card height in pixels.
verticalSpacingnumber60Vertical distance between neighboring cards.
perspectivenumber1000CSS perspective applied to the 3D stage.
cardsPerTurnnumber7Number of cards used for one complete revolution.
rotationnumber0Global angular offset in degrees.
cardTiltnumber0Additional clockwise card tilt in degrees.
cardRadiusnumber10Card corner radius in pixels.
centerScalenumber1.2Scale multiplier for cards nearest the center.
edgeFadenumber0.3Fraction of the outer travel range used for fading.
edgeBlurnumber6Maximum blur applied near the edges.
pauseOnHoverbooleantrueSmoothly eases automatic motion to a stop while the gallery is hovered.
imageFit"cover" | "contain""cover"Object fit used by every image.
grayscalenumber0Grayscale amount applied to every image, from 0 to 1.

Accessibility

Keyboard shortcuts and ARIA behavior.

  • The gallery is a list; each card is a list item labelled with its label or alt text.
  • Automatic motion stops when the user prefers reduced motion.