JSFiddle - React, Tailwind, and code Playground
by Craig Haywood
HTML
<button class="btn-3"><span>Goto Back Office</span></button>
CSS
.btn-3,
.btn-3 *,
.btn-3 :after,
.btn-3 :before,
.btn-3:after,
.btn-3:before {
border: 0 solid;
box-sizing: border-box;
}
.btn-3 {
-webkit-tap-highlight-color: transparent;
-webkit-appearance: button;
background-color: #fff;
background-image: none;
color: #ff0066;
cursor: pointer;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
font-size: 100%;
font-weight: 900;
line-height: 1.5;
margin: 0;
-webkit-mask-image: -webkit-radial-gradient(#000, #fff);
padding: 0;
text-transform: uppercase;
}
.btn-3:disabled {
cursor: default;
}
.btn-3:-moz-focusring {
outline: auto;
}
.btn-3 svg {
display: block;
vertical-align: middle;
}
.btn-3 [hidden] {
display: none;
}
.btn-3 {
border-radius: 8px;
border-width: 3px;
overflow: hidden;
padding: 0.8rem 3rem;
position: relative;
}
.btn-3 span {
mix-blend-mode: difference;
}
.btn-3:before {
background: lime;
content: "";
inset: 0;
position: absolute;
transform: translateY(var(--progress, -100%));
transition: transform 0.2s ease;
}
.btn-3:hover:before {
--progress: 0;
}