Toggle Sidebar B
AppearanceLight & dark mode D

Ripple Distortion

Pointer-driven water displacement that warps content and leaves a decaying wake.

Default

Every prop is wired to the controls underneath. Move the pointer over the image to leave a wake, or set Trigger to Click for single ripples.

Dark previewReplay previewOpen in new tab

Customize

Brush Size150px
Strength0.2
Swirl1
Rings4
Spread5
Fade3s
Spacing15px
Click Strength2
Dispersion0
Glint0
Tint Amount0.1
Tint
Highlight
Trigger
Quality

API Reference

RippleDistortion

PropTypeDefaultDescription
srcstring'https://images.unsplash.com/...'Image URL the ripples distort. Cover fitted to the container.
brushSizenumber150Diameter of each ripple the pointer lays down, in px.
strengthnumber0.2How far the image is pushed, as a fraction of its size.
swirlnumber1Full turns the push direction sweeps through as a ripple builds. 0 gives a flat push, higher folds the image into caustics.
ringsnumber4Concentric swells inside each ripple. 0 is a single plain blob.
spreadnumber5How many times its own size a ripple grows to before it dies.
fadenumber3How long a ripple survives, in seconds.
spacingnumber15Pointer travel between ripples, in px. Higher leaves a sparser trail.
dispersionnumber0Chromatic split between the red and blue channels as they refract.
glintnumber0Sheen riding the shoulders of each ripple.
tintstring#a855f7Colour the disturbed water takes on.
tintAmountnumber0.1How strongly the tint colours the disturbed water.
highlightColorstring#ffffffColour of the sheen.
grayscalebooleantrueDrain the colour out of the image so the folds read on tone alone.
trigger'hover' | 'click' | 'both''hover'What disturbs the surface: motion, clicks, or both.
clickStrengthnumber2How much larger a click ripple starts than a hover one.
quality'low' | 'medium' | 'high''low'Resolution of the displacement buffer. Lower trades crispness for fill rate.
enabledbooleantrueToggle the effect on or off.

Accessibility

Keyboard shortcuts and ARIA behavior.

  • Purely decorative canvas. With prefers-reduced-motion the pointer ripples are turned off. Set enabled to false to disable them manually.