10+ Stunning Button Hover Effects You Can Use in Elementor (With Code Examples)
Buttons are a core part of every website — they guide users, trigger actions, and drive engagement. But too often, they’re overlooked. A good hover effect can turn a plain button into a micro-interaction that enhances your site’s UX. In this post, I’ll share 10+ creative button hover effects you can use right now in Elementor (or plain HTML/CSS). These effects are lightweight, stylish, and easy to implement with just a few lines of CSS.
🧩 How to Use These in Elementor Add a Button Widget to your page. Go to the Advanced tab → CSS Classes, and enter one of the class names provided (e.g., btn-shimmer). Paste the CSS into: Site Settings > Custom CSS (Elementor Pro), or Your theme’s Customizer > Additional CSS.
🔘 Button Effects Included
1. Slide Up Text
.btn-slide-up {
position: relative;
overflow: hidden;
}
.btn-slide-up::after {
content: attr(data-text);
position: absolute;
top: 100%;
left: 0;
width: 100%;
height: 100%;
color: white;
background: #0073e6;
display: flex;
align-items: center;
justify-content: center;
transition: top 0.3s;
}
.btn-slide-up:hover::after {
top: 0;
}
Add data-text=”Hovered Text” to your button’s HTML attributes.
Here’s how to do it:
- Select the Button Widget: Open your Elementor page and select the button widget you want to modify.
- Navigate to Advanced Tab: In the left-hand panel, go to the Advanced tab.
- Open Custom Attributes: Expand the Attributes section (or Custom Attributes, depending on your Elementor version).,/li>
- Add the Attribute: In the provided field, enter your custom attribute in the format attribute_key|attribute_value.
For data-text, it would look like this:
data-text|Your Button Text
2. Border Grow
.btn-border-grow {
border: 2px solid #00c896;
transition: 0.3s;
}
.btn-border-grow:hover {
background-color: #00c896;
color: white;
box-shadow: 0 0 0 4px rgba(0, 200, 150, 0.3);
}
3. Underline Slide In
.btn-underline::after {
content: '';
position: absolute;
width: 0%;
height: 2px;
left: 0;
bottom: 6px;
background: #d62828;
transition: width 0.3s ease;
}
.btn-underline:hover::after {
width: 100%;
}
4. Fill From Left
.btn-fill-left::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: #fcbf49;
transition: left 0.4s ease;
z-index: -1;
}
.btn-fill-left:hover::before {
left: 0;
}
5. Ghost Fill
.btn-ghost-fill {
border: 2px solid #1d3557;
color: #1d3557;
background: transparent;
transition: background 0.3s, color 0.3s;
}
.btn-ghost-fill:hover {
background: #1d3557;
color: #fff;
}
6. Shimmer Effect
.btn-shimmer::after {
content: '';
position: absolute;
top: 0;
left: -75%;
width: 50%;
height: 100%;
background: linear-gradient(120deg, transparent, rgba(255,255,255,0.4), transparent);
transform: skewX(-20deg);
}
.btn-shimmer:hover::after {
animation: shimmer 0.8s forwards;
}
@keyframes shimmer {
to {
left: 125%;
}
}
7. Press Down Effect
.btn-press-down:active {
transform: scale(0.95);
}
8. Ripple Click Effect
.btn-ripple::after {
content: '';
position: absolute;
border-radius: 50%;
background: rgba(255, 255, 255, 0.3);
width: 20px;
height: 20px;
transform: scale(0);
opacity: 0;
}
.btn-ripple:active::after {
animation: ripple 0.6s ease;
left: 50%;
top: 50%;
transform: translate(-50%, -50%) scale(1);
opacity: 1;
}
@keyframes ripple {
to {
transform: translate(-50%, -50%) scale(4);
opacity: 0;
}
}
9. Gradient Slide Right
.btn-gradient-slide {
background: linear-gradient(120deg, #ff6f00, #ffcc00);
background-size: 200% 100%;
transition: background-position 0.3s ease;
}
.btn-gradient-slide:hover {
background-position: right center;
color: white;
}
10. 3D Flip
.btn-flip {
perspective: 1000px;
}
.btn-flip .front, .btn-flip .back {
display: block;
transition: transform 0.6s;
transform-style: preserve-3d;
backface-visibility: hidden;
}
.btn-flip .back {
position: absolute;
top: 0;
left: 0;
transform: rotateY(180deg);
}
.btn-flip:hover .front {
transform: rotateY(180deg);
}
.btn-flip:hover .back {
transform: rotateY(360deg);
}
11. Gradient Slide Right
.btn-gradient-slide {
background: linear-gradient(120deg, #ff6f00, #ffcc00);
background-size: 200% 100%;
transition: background-position 0.3s ease;
}
.btn-gradient-slide:hover {
background-position: right center;
color: white;
}