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. Dual Column Slider

Dual Column Slider

PreviousNext

An infinite two-column slider where each half reveals in the opposite direction through polygon clip-paths, with parallax images and a split title.

Open in
dual-column-slider-demo
components/ui/dual-column-slider-demo.tsx
import { DualColumnSlider } from "@/registry/tween/dual-column-slider"

export function DualColumnSliderDemo() {
  return <DualColumnSlider />
}

Installation

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

Usage

import { DualColumnSlider } from "@/components/ui/dual-column-slider"
<DualColumnSlider
  slides={[
    {
      title: "Solenne",
      tags: ["Residence & Courtyard", "Limewash & Stone"],
      accent: "#f3e7d3",
      leftImg: "/images/solenne-court.jpg",
      rightImg: "/images/solenne-stair.jpg",
      link: "/work/solenne",
    },
    // ...
  ]}
/>

How it works

  • The component is split into two columns. Each slide has a left image and a right image.
  • A lerped scroll position drives everything. Slide i is revealed by position - i: the left column clips it in from the bottom up, the right column from the top down, so the two halves move in opposite directions.
  • Each image drifts vertically by imageShift percent (in opposite directions per column) and is zoomed by imageZoom, giving a parallax feel.
  • The copy layer is as wide as the whole component and anchored to each column's outer edge, so the title reads as one word split across the two halves. It holds still for titleHold of the travel, then eases away with a smoothstep.
  • Only bufferSlides slides on either side are kept in the DOM; others are created and removed as you scroll, so it loops forever.
  • Wheel and touch listeners live on the component. With prefers-reduced-motion: reduce, the first slide is shown at rest.

Props

PropTypeDefaultDescription
slidesDualColumnSlide[]5 defaults{ title, tags, accent, leftImg, rightImg, link?, linkLabel? }.
scrollSensitivitynumber1200Wheel delta (px) needed to advance one slide.
smoothnessnumber0.05Lerp factor toward the scroll target.
bufferSlidesnumber3Slides kept mounted on each side of the current one.
imageShiftnumber25Image parallax travel in percent.
copyShiftnumber15Title parallax travel in percent.
titleHoldnumber0.1Fraction of travel the title holds at center.
imageZoomnumber1.25Image scale.
revealOverlapnumber0.5Extra percent on the clip reveal to avoid seams.
classNamestring—Extra classes on the outer section.
Exponential Strip SliderScroll Wave Gallery

On This Page

InstallationUsageHow it worksProps

Contribute

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