<button class="btn-31">
<span class="text-container">
<span class="text">Button</span>
</span>
</button>
html {
font-size: 50px;
}
html, body {
height: 100%;
margin: 0;
}
body {
display: grid;
place-items: center;
background: #0f172a;
}
.btn-31 {
display: block;
box-sizing: border-box;
padding: 1.5rem 3.5rem;
position: relative;
background: none;
color: white;
text-transform: uppercase;
border: 1px solid currentColor;
--progress: 100%;
}
.btn-31:before {
content: "";
z-index: -1;
position: absolute;
inset: 0;
background: white;
clip-path: polygon(
100% 0,
var(--progress) var(--progress),
0 100%,
100% 100%
);
transition: clip-path 0.2s;
}
.btn-31:hover {
--progress: 0%;
}
.btn-31 .text-container {
display: block;
position: relative;
overflow: hidden;
}
.btn-31 .text {
display: block;
position: relative;
font-size: 1rem;
font-weight: 900;
mix-blend-mode: difference;
}
.btn-31:hover .text {
animation: move-up-alternate 0.3s forwards;
will-change: transform;
}
@keyframes move-up-alternate {
from {
transform: translateY(0%);
}
50% {
transform: translateY(80%);
}
51% {
transform: translateY(-80%);
}
100% {
transform: translateY(0%);
}
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.