Skip to content
Knsept
Free playbook

Ripple button

A bright press ripple that starts exactly where you click or tap, and from the center for keyboard users.

JavaScriptUI Widgets Updated Oct 23, 2026
Live demo Reduced motion is on, so effects are toned down
<div class="ripple-row">
  <button class="ripple" type="button">Click anywhere on me</button>
  <button class="ripple ripple-outline" type="button">Or try the keyboard</button>
</div>

The ripple's radius is the distance from the press point to the farthest corner, so it always covers the whole button no matter where you press. overflow: hidden on the button clips it to the rounded shape, and a small scale(0.97) on :active makes the press feel physical.

The color comes from --ripple-color: bright white on filled buttons, a tint of the brand color on outlined ones. Each ripple removes itself when its animation ends, so rapid clicks don't pile up elements.

Keyboard users get a ripple from the center on Enter or Space. With reduced motion on, the ripple plays faster and the press-in is skipped.

More from the library

Buttons live

Hold-to-confirm button

A safer button for destructive actions. Press and hold until the bar fills; let go early to cancel.

Buttons live

Glowing gradient border

A button with a rotating gradient border and soft glow, done with one registered CSS property and no extra elements.

Buttons live

Magnetic button

A button that leans toward the cursor and springs back. Press-and-drag on touch, gentler with reduced motion.