tween
ComponentsTemplatesShowcaseContact

Command Palette

Search for a command to run...

Getting Started
  • Introduction
  • Installation
  • StoryNew
Guides
  • Motion Principles
  • Scroll and Smooth Scroll
  • Performance and Accessibility
Scroll Animations
  • Sticky Cards Scroll
  • Rise Fan Cards Scroll
  • Rotate Stack Scroll
  • Doodle Lens ScrollNew
  • Slit Open Hero ScrollNew
  • Logo Mask Zoom ScrollNew
  • ASCII Dissolve ScrollNew
  • Lottie Flight ScrollNew
  • Inline Icon Text ScrollNew
  • Starfield ScrollNew
  • Name Swap ScrollNew
  • Spotlight Gallery HeroNew
  • Slit Rotate Hero ScrollNew
  • Stroke Cover ScrollNew
  • Stroke Rows ScrollNew
Text Animations
  • Text Skew Reveal
  • Block Text Reveal
Hover & Cursor
  • Image Trail Cursor
  • Cursor Depth Logo
  • Physics Tag Drop
  • Elastic Card ListNew
  • Magnetic Cards SpringNew
Sliders & Carousels
  • Wheel Fullscreen Carousel
  • Ripple Displacement Slider
  • Three.js Blend Slider
  • Stacked Deck Slider
  • Orbit Cylinder SliderNew
  • Fan Stack SliderNew
  • Exponential Strip SliderNew
  • Dual Column SliderNew
Galleries & Grids
  • Scroll Wave Gallery
Menus & Navigation
  • Shrink Page MenuNew
Preloaders & Intros
  • Floating Items RevealNew
  • Word Cycle RevealNew
  • Tile Grid LoaderNew
Page Transitions
  • Panel Assembly TransitionNew
3D & WebGL
  • Fractal Glass Hero
  • Fluid Cursor Canvas
  • Fluid Portrait Hero
  • Fluid Gradient Canvas
  • Inversion Lens HoverNew
UI Elements
  • Circular Widgets
  • Vinyl Cover
  • Image Explosion Footer
  • Accordion Image FramesNew

(Tween) — Motion registry

Animated components & full sites, one command away.

Product

  • Components
  • Templates
  • Installation
  • Guides
  • Blog
  • Contact

Categories

  • Scroll Animations
  • Text Animations
  • Hover & Cursor
  • Sliders & Carousels
  • Galleries & Grids
  • Menus & Navigation
  • Preloaders & Intros
  • Page Transitions
  • 3D & WebGL
  • UI Elements
TWEEN
ease: power2.inOut0.00s
© 2026 TweenBack to topBuilt by mohammad
  1. Docs/
  2. Components/
  3. Orbit Cylinder Slider

Orbit Cylinder Slider

PreviousNext

Ten image panels on a CSS 3D cylinder that spins with the mouse wheel, tilts toward the cursor, and swaps a large preview and title for the front slide.

Open in
orbit-cylinder-slider-demo
Woman in a dark jacket resting her chin on her hand, black and white
Woman in a pale sweatshirt against a white wall, black and white
Woman in a shearling-collared coat against a dark backdrop
Woman wearing a floral crown with bare shoulders, black and white
Woman in a checked blazer with wind-swept hair, black and white
Woman in soft profile against a warm grey backdrop
Woman seated on a stool in wide trousers, black and white
Woman in a black turtleneck in low studio light
Woman with a hand raised to her lips in shadow, black and white
Woman with loose curls in a white shirt, black and white
Woman in a dark jacket resting her chin on her hand, black and white

Velvet Pause

components/ui/orbit-cylinder-slider-demo.tsx
import { OrbitCylinderSlider } from "@/registry/tween/orbit-cylinder-slider"

export function OrbitCylinderSliderDemo() {
  return <OrbitCylinderSlider />
}

Installation

pnpm dlx shadcn@latest add https://tweenui.dev/r/orbit-cylinder-slider.json

Usage

import { OrbitCylinderSlider } from "@/components/ui/orbit-cylinder-slider"
<OrbitCylinderSlider
  slides={[
    { src: "/portraits/velvet-pause.jpg", title: "Velvet Pause" },
    { src: "/portraits/chalk-light.jpg", title: "Chalk Light", alt: "..." },
    // ...
  ]}
/>

How it works

  • Each panel is placed with rotateY(i * 360 / n) translateZ(radius), forming a cylinder inside a preserve-3d orbit.
  • The mouse wheel (on the component only) pushes a target rotation; a requestAnimationFrame loop lerps the orbit toward it.
  • The large preview sits in the middle of the orbit and is counter-rotated so it always faces the viewer. Its image and the title tag switch to whichever slide is nearest the front.
  • Moving the mouse tilts the whole stage up to maxTilt degrees; leaving resets it.
  • The stage scales down on narrow containers so the cylinder always fits.
  • With prefers-reduced-motion: reduce, the cylinder is shown at rest with the first slide.

Props

PropTypeDefaultDescription
slidesOrbitCylinderSlide[]10 portraitsEach slide is { src, title, alt? }.
radiusnumber400Cylinder radius in px at full scale.
wheelSpeednumber0.2Degrees of rotation per pixel of wheel.
maxTiltnumber30Maximum mouse tilt in degrees.
smoothingnumber0.05Lerp factor for rotation and tilt.
backgroundstring"#eaeaea"Section background color.
classNamestring—Extra classes on the outer section.
Stacked Deck SliderFan Stack Slider

On This Page

InstallationUsageHow it worksProps

Contribute

  • Report an issue
  • Request a feature
  • Edit this page