Sliding Fill
A hidden color layer waits off to the left. On hover, it slides across — the text color also switches so it reads against the new fill. Uses ::before + transform: translateX.
Liquid Fill Up
A darker layer rises from the bottom of the button like water filling a glass. The cubic-bezier easing gives it a subtle acceleration.
Outline → Solid
A ghost/outline button that fills with a solid color on hover — the simplest and most reliable pattern. Works great as a secondary call-to-action.
3D Press
A chunky button with a darker base underneath. Lifts up on hover, presses down on click — like a real key. Great for game UIs or playful brands.
3D Extrude
A flat button with a hard offset shadow — pure brutalist / neo-retro style. On hover it lifts up and left; on click it slides back into its shadow.
Neumorphic
Soft "embossed" buttons that look like they're made of the same material as the background. Uses paired light and dark shadows. On hover, shadows invert inside the button, making it look pressed.
<a href="#" class="btn btn-neu">Hover me</a> <!-- Neumorphism needs a soft background (not pure white) --> <body style="background:#e5e7eb">
Text Flip
Two text layers stacked on top of each other — the front one slides up and the back one slides in from below. Great for showing a primary label and an action ("Learn more" → "Go →").
<a href="#" class="btn btn-flip"> <span class="txt front">Learn more</span> <span class="txt back">Let's go →</span> </a>
Icon Slide
A hidden arrow icon reveals itself on hover, nudging the text apart. Uses max-width + opacity on the icon so the button width animates smoothly.
<a href="#" class="btn btn-icon"> Continue <span class="icn">→</span> </a>
Underline Reveal
A minimal text-only button with an animated underline that draws in from the left. Perfect for quiet, text-forward designs.
<a href="#" class="btn btn-underline">Read the article</a>
Morph Shape
The border-radius property animates to different values on each corner, morphing the button from a rectangle into an organic blob.
Gradient Motion
A multi-stop gradient that's twice as wide as the button. On hover, it slides to reveal the other end. The second button uses a @keyframes loop so the gradient flows continuously.
<a href="#" class="btn btn-grad">Hover for motion</a> <a href="#" class="btn btn-grad-anim">Always animated</a>
Glass Morphism
A frosted-glass button that blurs whatever is behind it. Needs a colorful background to really show — backdrop-filter: blur() does the work. Blur increases and the button lifts slightly on hover.
<!-- Glass buttons need a colorful background to be visible --> <div class="glass-bg"> <a href="#" class="btn btn-glass">Hover me</a> </div>