JSFiddle - React, Tailwind, and code Playground
HTML
<p class="demo_1">東京(とうきょう、英語: Tokyo)とは、<a href="#">日本の関東平野中央部の東京湾に面する世界最大級のメトロポリス</a>であり、日本の事実上の首都である。</p>
<p class="demo_2">東京(とうきょう、英語: Tokyo)とは、<a href="#">日本の関東平野中央部の東京湾に面する世界最大級のメトロポリス</a>であり、日本の事実上の首都である。</p>
CSS
.demo_1 a {
text-decoration: none;
position: relative;
}
.demo_1 a:after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0%;
border-bottom: 2px solid red;
transition: .3s;
}
.demo_1 a:hover:after {
width: 100%;
}
.demo_2 a {
text-decoration: none;
background-image: linear-gradient(red, red);
background-position: 0% 100%;
background-repeat: no-repeat;
background-size: 0% 2px;
transition: .3s;
}
.demo_2 a:hover {
background-size: 100% 2px;
}
p {
width: 220px;
margin: auto;
margin-bottom: 35px;
}