こんにちは。すずきです。
この記事ではCSSを使ったアンダーラインのアニメーション実装方法について解説します。
- CSSでアンダーラインを付ける方法が分からない
- アンダーラインを付けたいが、そのままでは物足りない
- アンダーラインにおしゃれなアニメーションを実装したい
共通部分の実装
共通で使用するHTML
を作成します。
以下のようなコードで、基本的なメニューを作成します。
アンダーラインの位置は、<a>
タグのpadding
で調整しています。
<ul>
<li>
<a href="#">メニュー①</a>
</li>
<li>
<a href="#">メニュー②</a>
</li>
<li>
<a href="#">メニュー③</a>
</li>
</ul>
ul {
list-style: none;
padding: 0;
display: flex;
justify-content: center;
gap: 2rem;
}
a {
position: relative;
color: inherit;
text-decoration: none;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
a::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
right: 0;
width: 100%;
height: 2px;
background-color: gray;
}
フェードイン
ふわっと表れるアニメーションです。opacity
でアンダーラインの表示を切り替えています。
表示する速さはtransition
で指定しています。
a::after {
opacity: 0;
transition: all 0.3s;
}
a:hover::after {
opacity: 1;
}
下からフェードイン
下からふわっと表れるフェードインです。bottom
の初期位置を下にずらし、:hover
で元の位置に戻るよう追加で指定します。
a::after {
bottom: -4px;
opacity: 0;
transition: all 0.3s;
}
a:hover::after {
bottom: 0;
opacity: 1;
}
上からフェードイン
下からフェードインと同じ要領で、bottom
の初期位置を上にずらします、
a::after {
bottom: 4px;
opacity: 0;
transition: all 0.3s;
}
a:hover::after {
bottom: 0;
opacity: 1;
}
左から表示
アンダーラインが左から表示されるパターンです。
transform: scale(0, 1);
でx軸の0倍に縮小し、:hover
時に0にした倍率を元に戻します。transform-origin
で縮小される時の位置を指定しています。
a::after {
transform: scale(0, 1);
transform-origin: left top;
}
a:hover::after {
transform: scale(1, 1);
}
右から表示
先ほどの左から表示と同じ要領で、transform-origin
で位置を調整します。
a::after {
transform: scale(0, 1);
transform-origin: right top;
}
a:hover::after {
transform: scale(1, 1);
}
左から表れ、右から消える
:hover
時に左からアンダーラインが表れ、離すと右から消えます。:hover
時にtransform-origin
の位置を変更することで、右から消える動きを実装できます。
transition: all 0.3s;
のままだとtransform-origin
にもかかってしまうので、個別指定に変更が必要です。
a::after {
transform: scale(0, 1);
transform-origin: right top;
transition: transform .3s;
}
a:hover::after {
transform: scale(1, 1);
transform-origin: left top;
}
右から表れ、左から消える
「左から表れ、右から消える」と同じ要領で、transform-origin
の位置を調整します。
a::after {
transform: scale(0, 1);
transform-origin: left top;
transition: transform .3s;
}
a:hover::after {
transform: scale(1, 1);
transform-origin: right top;
}
中央から表れる
最後に中央から表れるパターンです。
「左から表れ、右から消える」と同じ要領で、transform-origin
の位置を調整するだけで実装できます。
a::after {
transform: scale(0, 1);
transform-origin: center top;
}
a:hover::after {
transform: scale(1, 1);
}
今回作成したアニメーション一覧は、以下でもまとめています。
See the Pen アンダーラインアニメーション by すずき (@k-suzuki3533) on CodePen.
終わりに
CSSを使ったアンダーラインのアニメーション実装方法について紹介しました。
アニメーションを実装することで以下のようなメリットがあるかと思います。
- 読者の注目を引くことができる
- クリックを促すことができる
- デザイン性が高くなる
- 読者の印象に残りやすくなる
CSSのみで簡単に実装できますので、ぜひ試してみてください!