Skip to content

Button

24 effects for the button family · every one loops · pure CSS unless a card says otherwise

Download

The arrow falls in and keeps falling out. The direction carries the meaning.

Pure CSSButton
Join waitlist

An echo of the button expands out of it and fades. One pseudo-element behind the real one, no extra markup.

Pure CSSButton
Start free

Two blurred blobs slide along opposite edges inside an overflow-hidden pill.

Pure CSSButton
Done

Pieces launch on their own angle, rotate as they rise, and fade at the top. Colour and angle come from a custom property per piece.

Pure CSSButton
Ship it

Eight hard shadows fanning diagonally while the element counter-moves. Reads as solid, not soft.

Pure CSSButton
Download2.4 MB

Two faces on one element, turned on the X axis. backface-visibility is what keeps the back face hidden; without it both labels show through each other at the halfway point.

Pure CSSButton
Get started

Solid turns to ghost using an inset shadow instead of a border, so nothing shifts by a pixel.

Pure CSSButton

A single directional hop that points where the action goes. Download bounces down, send bounces right.

Pure CSSButton
Refresh

The icon turns while the button holds still. A whole axis of effects lives in that separation.

Pure CSSButton
Focus me

An inset second border. Nearly free as a focus-visible treatment.

Pure CSSButton
Publish

Scaling to 2.1 rather than 1 is what makes the circle reach the corners.

Pure CSSButton
Activate

Two identical rings, one blurred behind the other — that is the whole glow.

Pure CSSButton
Confirm

Two halves closing from top and bottom. Cheaper than a sweep and far more distinctive.

Pure CSSButton
Get all-access

offset-path: rect() lets one element ride the border, and offset-rotate: auto keeps the head aimed along the edge. No SVG, no second layer.

Pure CSSButton
Shear

Pure shear with decaying amplitude. Reads as material flexing, not as an object shaking.

Pure CSSButton
Continue

One light sweeps across the fill. The cheapest effect in the set: a single moving background-position on an overlay.

Pure CSSButton
Get started

A wide colour band drifting under the label. The stops are deliberately deep — white text on a naive rainbow fails contrast, and this one does not.

Pure CSSButton
Saved ✓

Real squash and stretch. Volume is conserved: as one axis grows the other shrinks.

Pure CSSButton
DeployDeployingDeployed

One shape carrying three states: the width animates between them, the label and glyph pairs cross-fade, and the tick draws itself on arrival rather than appearing. The three widths are declared in the CSS; a width morph that adapts to arbitrary label text needs one measurement in JavaScript, which this does not do.

Pure CSSButton
SubscribeSubscribed ✓

Two states stacked in one slot; one slides out as the other slides in. The button never changes size.

Pure CSSButton
Get startedLet's go →

One dot scales to 34× and becomes the fill. Cheaper than animating a background.

Pure CSSButton
Hover me

A conic gradient rotating inside a masked ring. One layer, no SVG.

Pure CSSButton
Send

Two custom properties set on pointerdown carry the click coordinates.

CSS + a few linesButton
Tap

Sparks fly out on a rotated transform-origin, scaling up as they fade. Eight nodes, one keyframe.

CSS + a few linesButton