【css】ナビゲーションのホバーエフェクト5選!
今回は、ナビゲーションによく使われているホバーエフェクトをご紹介したいと思います。
実際にサイトで使用されているのを拝見したエフェクトを5つピックアップしてみました!
どれもCSSのみで実装可能です。
目次
1. 【共通】ナビゲーションのスタイル
今回実装しているナビゲーションのhtmlとcssは以下の通りです。どのパターンも共通のスタイルを使用しています。
html
- <nav class="header-nav">
- <ul>
- <li><a href="">ABOUT</a></li>
- <li><a href="">SERVICE</a></li>
- <li><a href="">NEWS</a></li>
- <li><a href="">CONTACT</a></li>
- </ul>
- </nav>
css
- /*reset*/
- ul {
- list-style: none;
- margin: 0;
- padding: 0;
- }
- a {
- color: #000;
- text-decoration: none;
- }
- /*ナビゲーションのスタイル*/
- .header-nav {
- margin: 50px 5% 0;
- }
- .header-nav ul {
- display:-webkit-box;
- display:-ms-flexbox;
- display: flex;
- -webkit-box-pack: justify;
- -ms-flex-pack: justify;
- justify-content: space-between;
- }
- .header-nav ul li {
- font-size: 14px;
- }
2. テキストの上にマークを表示
完成形デモ
See the Pen navigation-hover テキストの上にマークを表示 by crnote (@crnote) on CodePen.
CSS
ホバーエフェクト
マークのスタイルはナビゲーションのaタグに疑似要素「after」を付けて実装します。スタイルなどはお好みで変更してください。
「opacity: 0;」で不透明度を0にすることで非表示にしておきます。
ホバー時に「opacity: 1;」にすることでマークが表示されます。
- .header-nav ul li a {
- position: relative;
- }
- /*ホバーエフェクト*/
- .header-nav ul li a::after {
- /*マークのスタイル*/
- position: absolute;
- content: "";
- display: block;
- width: 10px;
- height: 10px;
- background-color: #046DFF;
- border-radius: 50%;
- top: -15px;
- left: calc(50% - 5px);
- /*不透明度0で非表示*/
- opacity: 0;
- /*アニメーションの速度設定*/
- -webkit-transition: all 0.6s ease;
- transition: all 0.6s ease;
- }
- .header-nav ul li a:hover::after {
- /*不透明度1で表示*/
- opacity: 1;
- }
3. テキストの下にマークをフワッと表示
完成形デモ
See the Pen navigation-hover テキストの下にマークをフワッと表示 by crnote (@crnote) on CodePen.
CSS
ホバーエフェクト
上記の「2.テキストの上にマークを表示」と基本的には同じです。
マークの位置を「bottom: -15px;」でテキストの下に設定しておきます。
今回はフワッと表示させるために「transform: translateY(50%);」を設定し、マークを50%下方向へ移動させておきます。
ホバー時に「transform: translateY(0);」で0の位置に移動させることでフワッと表示させることが出来ます。
- .header-nav ul li a {
- position: relative;
- }
- /*ホバーエフェクト*/
- .header-nav ul li a::after {
- /*マークのスタイル*/
- position: absolute;
- content: "";
- display: block;
- width: 10px;
- height: 10px;
- background-color: #FBDA32;
- border-radius: 50%;
- bottom: -15px;
- left: calc(50% - 5px);
- /*不透明度0で非表示*/
- opacity: 0;
- /*下方向へ50%移動*/
- -webkit-transform: translateY(50%);
- transform: translateY(50%);
- /*アニメーションの速度設定*/
- -webkit-transition: all 0.6s ease;
- transition: all 0.6s ease;
- }
- .header-nav ul li a:hover::after {
- /*不透明度1で表示*/
- opacity: 1;
- /*0位置に移動*/
- -webkit-transform: translateY(0);
- transform: translateY(0);
- }
4. アンダーラインを左から右へ
完成形デモ
See the Pen navigation-hover アンダーラインを左から右へ by crnote (@crnote) on CodePen.
CSS
アンダーラインのスタイルはナビゲーションのaタグに疑似要素「after」を付けて実装します。スタイルなどはお好みで変更してください。
アンダーラインの「width: 0;」で非表示にしておきます。
ホバー時に「width: 100%;」にすることで左から右へアンダーラインが表示されます。
- .header-nav ul li a {
- position: relative;
- }
- /*ホバーエフェクト*/
- .header-nav ul li a::after {
- /*アンダーラインのスタイル*/
- position: absolute;
- content: "";
- display: block;
- height: 3px;
- background-color: #E42C31;
- bottom: -15px;
- left: 0;
- /*幅を0に設定*/
- width: 0;
- /*アニメーションの速度設定*/
- -webkit-transition: all 0.5s ease;
- transition: all 0.5s ease;
- }
- .header-nav ul li a:hover::after {
- /*幅を100%に設定*/
- width: 100%;
- }
5. アンダーラインを中央から左右へ
完成形デモ
See the Pen navigation-hover アンダーラインを中央から左右へ by crnote (@crnote) on CodePen.
CSS
上記の「4.アンダーラインを左から右へ」と同じく、アンダーラインのスタイルをナビゲーションのaタグに疑似要素「after」を付けて実装します。
アンダーラインを中央から左右へ表示させるために、「transform: scale(0, 1);」で非表示にします。
「transform: scale();」は要素を拡大表示、縮小表示する時に使用します。
記述の仕方は、
transform: scale(数値, 数値)
となります。
1つ目の数値はX方向、2つ目の数値はY方向の比率を入力します。
今回は横方向への拡大なので、1つ目の数値を0にします。
また、「 transform-origin: center top; 」でアニメーションの基点を中央に設定しておきます。
ホバー時に「transform: scale(1, 1);」にすることでアンダーラインが中央から左右へ拡大して表示されます。
- .header-nav ul li a {
- position: relative;
- }
- /*ホバーエフェクト*/
- .header-nav ul li a::after {
- /*アンダーラインのスタイル*/
- position: absolute;
- content: "";
- display: block;
- width: 100%;
- height: 3px;
- background-color: #0DC600;
- bottom: -15px;
- left: 0;
- /*横方向0で非表示にする*/
- -webkit-transform: scale(0, 1);
- transform: scale(0, 1);
- /*中央を基点にアニメーション*/
- -webkit-transform-origin: center top;
- transform-origin: center top;
- /*アニメーションの速度設定*/
- -webkit-transition: all 0.5s ease;
- transition: all 0.5s ease;
- }
- .header-nav ul li a:hover::after {
- /*横方向等倍まで拡大*/
- transform: scale(1, 1);
- }
6. テキストを拡大して表示
完成形デモ
See the Pen navigation-hover テキストを大きく表示 by crnote (@crnote) on CodePen.
CSS
最後に、ホバー時にテキストを拡大して表示させる方法のご紹介です。
こちらのcssはシンプルで、ホバー時にテキストに「transform: scale(1.25);」を設定することで、1.25倍拡大されます。
アニメーションの設定を変更することで、動き方の印象が変化しそうです。
- .header-nav ul li {
- font-size: 14px;
- /*アニメーションの速度設定*/
- -webkit-transition: all 0.5s ease-out;
- transition: all 0.5s ease-out;
- }
- /*ホバーエフェクト*/
- .header-nav ul li:hover {
- /*1.25倍に拡大*/
- -webkit-transform: scale(1.25);
- transform: scale(1.25);
- }
まとめ
以上、cssのみで実装できるナビゲーションのホバーエフェクトを5つご紹介いたしました。
ナビゲーションのホバーエフェクトは必須だと思うので、いろいろなアイデアを持っておくと良いと思います。
また、アニメーションの設定にこだわると、より表現の幅が広がると感じました。