BOOK Studio947
狩野祐東・狩野さやか著書

リンクに伸びる下線をつけるには

ときどきみかける「テキストにホバーしたら下線が横に伸びる」リンク。簡単に見えますが意外と面倒で、ちょっと長いCSSを書かないといけません。

基本的には、<a>:after, ::afterdisplay: block;で表示しておいて、その::afterのボックスの幅を…

  • ポインタがホバーしていないときは 0(width: 0;
  • ポインタがホバーしているときは 100%(width: 100%;

にします。

また、マウスアウトしたときに下線を縮めたい場合には、ホバーしていないときの::afterだけでなく、ホバーしているときの:hover::afterにも、transitionを適用しておく必要があります。

サンプルソースを上げておきます。HTMLは通常のリンクですね。

<p><a href="#">Awesome link!</a></p>

CSSはこのようになります。

html * {
	font-family: sans-serif;
}
* ::after {
	box-sizing: border-box;
}
a {
	display: inline-block; /* aのdisplayはinline-block */
	color: #4A8FE4;
	text-decoration: none;
}
a::after {
	content: "";
	display: block;
	width: 0; /* ホバーしていないときは幅0 */
	height: 1px;
	transition: all 0.5s ease;
}
a:hover::after {
	width: 100%; /* ホバーしていないときは幅100% */
	height: 1px;
	background-color: #4A8FE4;
	transition: all 0.5s ease;
}

実際の動作はこちらで確認できます。

狩野 祐東

Web/アプリケーションUIデザイナー、エンジニア。執筆家。 アメリカ・サンフランシスコに留学、UIデザイン理論を学ぶ。Webサイトやアプリケーションのデザイン・開発、関連技術書籍の執筆を数多く手がける。株式会社Studio947代表。