CSSトランジションによるアニメーションナビゲーションリンクの下線

CSSトランジションと疑似要素を使用したナビゲーションリンクのアニメーション下線効果の構築。中央から展開とスライドインのバリエーションを含む。

Common Components

詳細な説明

アニメーションリンク下線

ホバーで伸びるアニメーション下線は、デフォルトのtext-decoration: underlineに対する洗練された代替です。width トランジションを持つ疑似要素を使用します。

中央から展開

.nav-link {
  position: relative;
  text-decoration: none;
}

.nav-link::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 50%;
  width: 0;
  height: 2px;
  background-color: currentColor;
  transition: width 0.3s ease-out, left 0.3s ease-out;
}

.nav-link:hover::after {
  width: 100%;
  left: 0;
}

左からスライド

.nav-link::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 2px;
  background-color: currentColor;
  transition: width 0.3s ease-out;
}

.nav-link:hover::after {
  width: 100%;
}

パフォーマンス向上のためのtransformの使用

GPUアクセラレーションのパフォーマンスのために、widthの代わりにtransform: scaleX()を使用します:

.nav-link::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 2px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.3s ease-out;
}

.nav-link:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

このscaleXアプローチは、widthプロパティのアニメーション(レイアウトをトリガーする)を避けるため、より高性能です。疑似要素はフル幅で始まりますがscaleX(0)で視覚的に折りたたまれ、ホバーで展開します。

ユースケース

アニメーション下線は、ウェブサイトのヘッダー、ナビゲーションバー、サイドバーメニュー、パンくずリスト、タブコンポーネントで、ブラウザデフォルトのテキスト装飾に頼らずにエレガントなホバーフィードバックを提供するために使用されます。

試してみる — CSS Transition Generator

フルツールを開く