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. Ripple Displacement Slider

Ripple Displacement Slider

PreviousNext

A click-driven slider where each advance fires a circular ripple wave that distorts the image and crossfades to the next slide, with the title and copy sliding out and back in.

Open in
ripple-displacement-slider-demo

The Fog Shift

Two night attendants keep the pumps lit through a fog that rolls in thicker every hour and never quite lifts.

Click to advance ยท 01 / 04
components/ui/ripple-displacement-slider-demo.tsx
import { RippleDisplacementSlider } from "@/registry/tween/ripple-displacement-slider"

export function RippleDisplacementSliderDemo() {
  return <RippleDisplacementSlider />
}

Installation

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

Usage

import { RippleDisplacementSlider } from "@/components/ui/ripple-displacement-slider"
<RippleDisplacementSlider
  slides={[
    {
      title: "The Fog Shift",
      description: "โ€ฆ",
      image:
        "https://images.unsplash.com/photo-1662915975682-7853edba44d3?q=80&w=1600&h=1000&fit=crop&crop=center&auto=format",
    },
    {
      title: "Signal Blue",
      description: "โ€ฆ",
      image:
        "https://images.unsplash.com/photo-1607979035674-71b74fd41552?q=80&w=1600&h=1000&fit=crop&crop=center&auto=format",
    },
  ]}
/>

Clicking the slider advances it. A Three.js fragment shader tracks a ripple radius tweened from the center outward: pixels just behind the wavefront are displaced along a decaying sine, given a brightness boost, and crossfaded from the current texture to the next within a thin band โ€” so the new slide is "pushed" into view by the wave. The title is split into characters and the description into masked lines (via SplitText); they slide up and out on click and slide back in once the next slide is committed mid-ripple. The overlay uses mix-blend-difference so the text stays legible over any image.

The renderer sizes to the component via a ResizeObserver, click handling is scoped to the component (never the window), and prefers-reduced-motion: reduce swaps slides instantly with no ripple or text animation.

Props

PropTypeDefaultDescription
slidesRippleSlide[]4 defaultsEach slide is { title, description, image, alt? }.
backgroundstring"#0d0d0d"Outer container background.
durationnumber2.6Seconds for the ripple to cross the screen.
waveFreqnumber25Ripple oscillation frequency.
wavePownumber0.035Ripple displacement amplitude.
classNamestringโ€”Extra classes on the outer container.
Wheel Fullscreen CarouselThree.js Blend Slider

On This Page

InstallationUsageProps

Contribute

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