22 CSS Button Group Designs

A CSS button group is a row of related buttons that act as a single visual unit. These 22 hand-coded designs are ready-to-ship segmented controls, split buttons, pagination strips, toolbars, and toggle bars you can drop into a project today — copy the markup, wire your handlers, and ship.

22 unique groups 19 Pure CSS 3 CSS + JS 100% copy-paste ready Published
01 / 22
Liquid Mercury
Pure CSS
Liquid Mercury — preview
Three options on a viscous mercury rail.
02 / 22
Subgrid Beam
Pure CSS
Subgrid Beam — preview
Three actions on a single subgrid track with a luminous beam underline that physically moves between buttons on hover, drawn with a single shared pseudo-element.
03 / 22
Acid Tags
Pure CSS
Acid Tags — preview
Multi-select chips with an acid-green glow halo that radiates outward when checked.
04 / 22
Quantum Split
Pure CSS
Quantum Split — preview
Primary action with a sibling menu that opens via native details/summary.
05 / 22
Cellular Toggle
Pure CSS
Cellular Toggle — preview
Format toggles where checking a cell fills it with a swirling conic gradient anchored to its center.
06 / 22
Pixel Matrix
Pure CSS
Pixel Matrix — preview
Pagination styled as a tiny LED matrix display.
07 / 22
Gradient Flow
Pure CSS
Gradient Flow — preview
Multi-step wizard where the "done" line is a flowing gradient (not a static fill) — the light visibly travels through the completed segments toward the current step.
08 / 22
Holographic Dial
Pure CSS
Holographic Dial — preview
Icon segmented control where the active icon is filled with a moving conic-gradient holographic sheen.
09 / 22
Stack Tower
Pure CSS
Stack Tower — preview
Vertical action column where each row pushes 8px deeper on hover, and the whole stack rotates 1° in 3D.
10 / 22
Orbital FAB
Pure CSS
Orbital FAB — preview
A FAB that fans out three satellite buttons on click — but they arc into position along a curved path, not a straight line.
11 / 22
Glitch Grid
Pure CSS
Glitch Grid — preview
Filter buttons where the active state ghosts a cyan/magenta RGB-split clone of itself, vibrating subtly on hover.
12 / 22
Plasma Pill
Pure CSS
Plasma Pill — preview
A glassmorphic pill that always carries a slowly rotating conic plasma loop behind it via @property — the kind of motion that feels alive without being noisy.
Advertisement
13 / 22
Pulse Reactor
Pure CSS
Pulse Reactor — preview
A radar-style action bar — clicking any button activates it AND emits a circular shockwave that ripples outward across the whole bar.
14 / 22
Solar Flare
Pure CSS
Solar Flare — preview
Date-range presets where a warm solar glow follows your cursor across the bar.
15 / 22
Bio-Decision
Pure CSS
Bio-Decision — preview
A two-button row where each button has a different "voice": reject shakes when hovered (negative pull), approve emits a particle burst on click via a single mask-image pseudo-element.
16 / 22
Ferro Toolbar
Pure CSS
Ferro Toolbar — preview
Icon toolbar where icons subtly tilt toward your cursor as you sweep across — pure CSS, driven by --mx via inline style on the parent.
17 / 22
Magnetic Disc
Pure CSS
Magnetic Disc — preview
Three pricing tiers as a slowly rotating disc — each disc carries a tier; hover slows the rotation and lifts the front disc, click snaps it forward.
18 / 22
Plasma Combo
Light JS
Plasma Combo — preview
A dropdown trigger with a neon plasma border that pulses subtly.
19 / 22
Kinetic Trio
Light JS
Kinetic Trio — preview
Three icon actions where the active button morphs into a confirmation pill, expands in width, and plays a gradient flow before snapping back.
20 / 22
Synthwave Dial
Light JS
Synthwave Dial — preview
Quantity stepper as a synthwave-grid dial — chrome +/− buttons with a scanline window that morphs to magenta when the count hits max, cyan when it hits min.
21 / 22
Wormhole Tabs
Pure CSS
Wormhole Tabs — preview
Tab nav where the active indicator stretches into a trailing wormhole as it moves between tabs — implemented via :has() and a single shared pseudo-element with smooth width interpolation.
22 / 22
Aurora Dust
Pure CSS
Aurora Dust — preview
Three premium tier buttons floating on a particle-aurora field — drifting blobs of cyan / magenta / gold via animated background-positions, layered noise, and a subtle hover-lift.

Build your own

Tweak the exact look in our visual generators — no signup, instant copy-paste.

FAQ

Frequently asked questions

What is a CSS button group?
A button group is a set of related buttons rendered together as a single visual unit — toolbars, segmented controls, pagination, split-action buttons, stepper wizards and toggle bars are all button groups. The pattern signals to users that the buttons share a context or are mutually exclusive.
When should I use a button group instead of separate buttons?
Use a group when the buttons share an axis of meaning — same data target, mutually exclusive states (radio-style), multi-select toggles (bold/italic/underline), or sequential actions like pagination. Use separate buttons when the actions are unrelated or have different priorities.
Are these CSS button groups accessible?
Yes. Each demo uses real interactive elements — button, input radio, input checkbox, details/summary — with appropriate ARIA (aria-current, aria-pressed, aria-expanded, aria-label) and visible focus states. They work with keyboard, mouse, and screen readers out of the box.
Do button groups work without JavaScript?
Most do. Of the 22 patterns, 17 are pure CSS using :checked, :hover, :focus-within and :has() to drive state. Only the dropdown combo, number stepper, copy-flash and a couple of others include small self-contained JS snippets.
Can I use these button groups in React, Vue, or Astro?
Yes. Every demo is plain HTML and CSS (with optional vanilla JS) and has no dependencies. Drop the markup into any framework — React JSX, Vue templates, Astro components, plain HTML — and the styles work as-is. MIT licensed.

Search CodeFronts

Loading…