JSFiddle - React, Tailwind, and code Playground
HTML
<h4 class="title">oveflow:hiddenなし</h4>
<div class="link-btn"><a href="#">Link Button</a></div>
<hr>
<h4 class="title">oveflow:hiddenあり</h4>
<div class="link-btn ofh"><a href="#">Link Button</a></div>
CSS
.title {
text-align: center;
}
.link-btn {
position: relative;
margin-right: auto;
margin-left: auto;
width: fit-content;
background-color: #444;
}
.link-btn.ofh {
overflow: hidden;
}
.link-btn::before {
content: "";
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #888;
z-index: 1;
transform: translateX(-100%);
transition: transform 0.4s linear;
}
.link-btn:hover::before {
transform: translateX(0);
}
.link-btn a {
display: block;
position: relative;
z-index: 2;
padding: 0.5em 1em;
color: white;
text-align: center;
text-decoration: none;
}