ツールチップ

このページの目的

アイコンや特定のテキストにマウスを乗せると、フワッと補足説明の吹き出し(ツールチップ)を表示する機能の実装方法を学びます。
UIをシンプルに保ちつつ、補助的な情報を提供したい場合に非常に便利です。今回は、CSSの擬似要素を使った、JavaScript不要の実装方法を紹介します。

smart_display動作サンプル

実際に動作するサンプルです。下のアイコンの上にマウスカーソルを乗せてみてください。

help

このサンプルを実装するためのHTMLとCSSのコードは以下の通りです。


code実装コード解説

1. HTMLの構造

ツールチップを表示させたい要素を<span>などで囲み、data-tooltipというカスタムデータ属性に、表示したいテキストを設定します。

<!-- ツールチップのコンテナ -->
<span class="tooltip-container" data-tooltip="ここに表示したいテキスト">
  
  <!-- ツールチップを表示する対象の要素(アイコンやテキストなど) -->
  <span>Hover Me!</span>
  
</span>

2. CSSのスタイル

CSSの擬似要素::before(吹き出しの本体)と::after(吹き出しの三角形)を使って、ツールチップの見た目を作ります。普段は非表示にしておき、ホバーされた時だけ表示されるようにします。

.tooltip-container {
  position: relative; /* ★擬似要素の基準点にする */
  display: inline-block;
}

/* 吹き出しの本体 */
.tooltip-container::before {
  content: attr(data-tooltip); /* ★data-tooltip属性の値を表示 */
  position: absolute;
  bottom: 100%; /* 要素の上に配置 */
  left: 50%;
  transform: translateX(-50%);
  margin-bottom: 10px; /* 要素との余白 */
  
  background: #333;
  color: #fff;
  padding: 8px 12px;
  border-radius: 4px;
  white-space: nowrap; /* テキストを改行させない */
  
  /* 普段は非表示 */
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s, visibility 0.3s;
}

/* 吹き出しの三角形 */
.tooltip-container::after {
  content: '';
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-bottom: 4px; /* 本体と三角形の間の隙間を埋める */
  
  border: 6px solid transparent;
  border-top-color: #333; /* 三角形の色 */

  /* 普段は非表示 */
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s, visibility 0.3s;
}

/* ★ホバーされたら表示 */
.tooltip-container:hover::before,
.tooltip-container:hover::after {
  opacity: 1;
  visibility: visible;
}