Edit in JSFiddle


              
.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;
}
<p class="demo_1">東京(とうきょう、英語: Tokyo)とは、<a href="#">日本の関東平野中央部の東京湾に面する世界最大級のメトロポリス</a>であり、日本の事実上の首都である。</p>
<p class="demo_2">東京(とうきょう、英語: Tokyo)とは、<a href="#">日本の関東平野中央部の東京湾に面する世界最大級のメトロポリス</a>であり、日本の事実上の首都である。</p>