In a world of repetitive UI elements, ButtonLab is your go-to resource for uniquely styled, handcrafted CSS buttons.
<button class="pride-button">🏳️🌈 Celebrate Pride</button>
<style>
.pride-button {
color: black;
background: linear-gradient(
90deg,
red,
orange,
yellow,
green,
blue,
indigo,
violet
);
background-size: 400%;
background-position: 0% 50%;
border: none;
padding: 0.75rem 1.5rem;
font-size: 1rem;
font-weight: bold;
border-radius: 8px;
cursor: pointer;
transition:
background-position 1s ease,
color 0.6s ease,
box-shadow 0.6s ease;
box-shadow: none;
}
.pride-button:hover {
background-position: 100% 50%;
color: white;
box-shadow:
0 0 10px red,
0 0 20px orange,
0 0 30px yellow,
0 0 40px green,
0 0 50px blue,
0 0 60px indigo,
0 0 70px violet;
}
</style>
<div class="angled-container">
<button class="holo-button">Activate</button>
</div>
<style>
.holo-button {
position: relative;
padding: 1rem 2rem;
font-size: 1rem;
color: #00fff7;
background: transparent;
border: 2px solid #00fff7;
text-transform: uppercase;
letter-spacing: 2px;
border-radius: 4px;
cursor: pointer;
overflow: hidden;
transition: all 0.3s ease;
box-shadow: 0 0 5px #00fff7, inset 0 0 5px #00fff7;
}
.holo-button::before {
content: '';
position: absolute;
top: -100%;
left: 0;
width: 100%;
height: 100%;
background: repeating-linear-gradient(
0deg,
rgba(0, 255, 247, 0.25),
rgba(0, 255, 247, 0.1) 2px,
transparent 4px
);
opacity: 0;
transition: opacity 0.3s ease;
pointer-events: none;
z-index: 1;
}
.holo-button::after {
content: '';
position: absolute;
inset: 0;
background: rgba(0, 255, 247, 0.1);
opacity: 0;
transition: opacity 0.3s ease;
z-index: 0;
}
.holo-button:hover {
box-shadow:
0 0 12px #00fff7,
0 0 24px #00fff7,
0 0 48px #00fff7,
inset 0 0 10px #00fff7;
color: #ffffff;
}
.holo-button:hover::before {
animation: holoScan 1.5s linear infinite;
opacity: 1;
}
.holo-button:hover::after {
opacity: 1;
}
@keyframes holoScan {
0% {
top: -100%;
}
100% {
top: 100%;
}
}
</style>
<div class="flip-button">
<div class="flip-inner">
<div class="flip-front">Hover</div>
<div class="flip-back">Activate</div>
</div>
</div>
<style>
.flip-button {
width: 140px;
height: 50px;
perspective: 600px;
cursor: pointer;
}
.flip-inner {
position: relative;
width: 100%;
height: 100%;
transition: transform 0.6s ease;
transform-style: preserve-3d;
}
.flip-button:hover .flip-inner {
transform: rotateY(180deg);
}
.flip-front,
.flip-back {
position: absolute;
width: 100%;
height: 100%;
line-height: 50px;
text-align: center;
font-weight: bold;
font-size: 1rem;
border: 2px solid #00ffd5;
color: #00ffd5;
background: #000;
border-radius: 8px;
backface-visibility: hidden;
box-shadow: 0 0 8px rgba(0, 255, 213, 0.3);
}
.flip-back {
transform: rotateY(180deg);
background: #00ffd5;
color: #000;
border-color: #000;
}
</style>
<button class="morph-button">Hover Me</button>
<style>
.morph-button {
background-color: #000;
color: #fff;
border: 3px solid yellow;
padding: 0.75rem 1.5rem;
font-size: 1rem;
cursor: pointer;
transition: all 0.8s ease;
border-radius: 0;
position: relative;
z-index: 1;
}
.morph-button::before {
content: '';
position: absolute;
top: -8px;
left: -8px;
right: -8px;
bottom: -8px;
border: 3px solid yellow;
border-radius: 0;
opacity: 0;
transition: all 0.8s ease;
z-index: -1;
}
.morph-button:hover {
border-radius: 999px;
}
.morph-button:hover::before {
border-radius: 999px;
opacity: 1;
}
</style>
<button class="pulse-button">
<span class="ring ring1"></span>
<span class="ring ring2"></span>
<span class="ring ring3"></span>
<span class="button-label">Click Me</span>
</button>
<style>
.pulse-button {
position: relative;
width: 160px;
height: 56px;
border: 2px solid #00ffd5;
border-radius: 12px;
background: transparent;
color: white;
font-size: 1rem;
cursor: pointer;
overflow: hidden;
z-index: 1;
}
.button-label {
position: relative;
z-index: 2;
}
.ring {
position: absolute;
top: 50%;
left: 50%;
width: 160px;
height: 160px;
background: rgba(0, 255, 213, 0.15);
border-radius: 50%;
transform: translate(-50%, -50%) scale(0.5);
animation: pulseAnim 2.5s ease-out infinite;
z-index: 0;
pointer-events: none;
}
.ring2 {
animation-delay: 0.8s;
}
.ring3 {
animation-delay: 1.6s;
}
@keyframes pulseAnim {
0% {
transform: translate(-50%, -50%) scale(0.5);
opacity: 0.5;
}
70% {
transform: translate(-50%, -50%) scale(1.8);
opacity: 0;
}
100% {
transform: translate(-50%, -50%) scale(1.8);
opacity: 0;
}
}
</style>
<div class="button-wrapper">
<button class="gradient-border-btn">Hover Me</button>
</div>
<style>
.button-wrapper {
position: relative;
display: inline-block;
padding: 4px;
border-radius: 12px;
overflow: hidden;
}
.button-wrapper::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(135deg, #00ffd5, #007cf0);
transition: opacity 0.4s ease;
z-index: 0;
}
.button-wrapper::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(135deg, #f72585, #7209b7);
opacity: 0;
transition: opacity 0.4s ease;
z-index: 0;
}
.button-wrapper:hover::after {
opacity: 1;
}
.gradient-border-btn {
position: relative;
z-index: 1;
background: transparent;
color: #ffffff;
padding: 0.75rem 1.5rem;
font-size: 1rem;
border: none;
border-radius: 10px;
cursor: pointer;
transition: background 0.4s ease, color 0.4s ease;
}
.gradient-border-btn:hover {
background: rgba(255, 255, 255, 0.1);
}
</style>