پیشنمایش زنده
کد HTML
<button>
<span class="button_top"> Button </span>
</button>
کد CSS
button {
--button_radius: 0.75em;
--button_color: #e8e8e8;
--button_outline_color: #000000;
--hover_offset: 4px;
--active_offset: 2px;
--shadow_color: rgba(0, 0, 0, 0.5);
--glitch_offset: 2px;
font-size: 17px;
font-weight: bold;
border: none;
width: 200px;
border-radius: var(--button_radius);
background: var(--button_outline_color);
position: relative;
cursor: pointer;
transition: all 0.2s cubic-bezier(0.23, 1, 0.32, 1);
overflow: hidden;
}
.button_top {
display: block;
box-sizing: border-box;
border: 5px solid var(--button_outline_color);
border-radius: var(--button_radius);
padding: 0.75em 1.5em;
background: var(--button_color);
color: var(--button_outline_color);
transform: translateY(-0.2em);
transition: transform 0.2s cubic-bezier(0.23, 1, 0.32, 1);
}
button:hover {
box-shadow: var(--hover_offset) var(--hover_offset) 0 var(--shadow_color);
transform: translate(
calc(-1 * var(--hover_offset)),
calc(-1 * var(--hover_offset))
);
}
button:hover .button_top {
transform: translateY(-0.33em);
}
button:active .button_top {
transform: translateY(0);
}
button:active {
box-shadow: var(--active_offset) var(--active_offset) 0 var(--shadow_color);
transform: translate(
calc(-1 * var(--active_offset)),
calc(-1 * var(--active_offset))
);
}
button:focus {
outline: none;
box-shadow: 0 0 0 2px var(--button_outline_color),
inset 0 0 0 2px var(--button_color);
}
/* Brutalist hover effect */
button::before,
button::after {
content: attr(data-content);
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--button_color);
color: var(--button_outline_color);
display: flex;
align-items: center;
justify-content: center;
transition: all 0.2s cubic-bezier(0.23, 1, 0.32, 1);
overflow: hidden;
border-radius: var(--button_radius);
opacity: 0;
}
/* Brutalist active effect */
button:active::before,
button:active::after {
transform: none;
}
/* Additional brutalist flair */
@keyframes brutalistShake {
0%,
100% {
transform: translateX(0) translateY(0);
}
25% {
transform: translateX(-2px) translateY(-2px) rotate(-1deg);
}
75% {
transform: translateX(2px) translateY(2px) rotate(1deg);
}
}
button:hover {
animation: brutalistShake 0.4s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
}