CSS BUTTON HOVER EFFECTS GENERATOR
Browse hover and press effects for buttons, preview live, and copy the CSS.
.button {
font: inherit;
cursor: pointer;
padding: 0.75rem 1.5rem;
border-radius: 6px;
}
.button {
position: relative;
overflow: hidden;
z-index: 0;
background: #201d19;
color: #f2e9dc;
border: 1px solid #ff6a35;
transition: color 0.3s ease;
}
.button::before {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: #ff6a35;
transform: translateX(-101%);
transition: transform 0.35s ease;
}
.button:hover, .button.force {
color: #201d19;
}
.button:hover::before, .button.force::before {
transform: translateX(0);
}How to use a button hover effect
- 1
Hover (or press, for the ripple effect) each card in the gallery to preview the effect live.
- 2
Turn on Force preview if you're on a touch device without hover.
- 3
Pick an accent color for the button.
- 4
Click a card to select that effect.
- 5
Copy the CSS and HTML and apply the .button class to your button.
Questions
- Do these effects need any JavaScript?
- No. Every effect here is driven purely by :hover, :active, and a pseudo-element (::before/::after) with a CSS transition or keyframe animation — no click handlers or event listeners required.
- Why does Ripple use :active instead of :hover?
- A real ripple is meant to react to a press, not a passive hover, so the circle's width/height transition is triggered on :active. The gallery preview also listens to the .force class so you can see the expanded state without holding the mouse button down.
- Can I combine two effects, like Lift and Shine?
- Yes — the CSS for each effect only touches the .button rule and one pseudo-element, so you can usually merge two effects by combining their declarations (watch for both using the same ::before, in which case rename one to ::after).
- Will the Fill effect work on a button that already has a background color?
- Fill expects the button to start transparent with just a colored border, since it reveals the fill color via an inset box-shadow. If your button already has a background, switch background to transparent first or the fill won't be visible against it.
- Does this tool store or upload anything?
- No — every effect and color is generated and rendered locally in your browser. Nothing is sent to a server.