
CodePenで公開されている、CSSやJavaScriptで作られたツールチップ(マウスホバー時に補足情報を表示するUI)のアイデアを10個セレクトしました。属性セレクタを使ったシンプルなCSSのみの実装から、Bootstrapプラグインを使ったもの、SVGのライン描画アニメーションを組み合わせた凝った演出まで、幅広いバリエーションを集めています。各スニペットには実装のポイントも添えているので、どんな仕組みで動いているのか、どこを見ればカスタマイズできるのかが把握しやすくなっています。気になるデザインが見つかったら、実際のサイト制作の参考にしてみてください。
ツールチップのアイデア
CSS Tooltip Magic
属性セレクタだけで作るシンプルなツールチップのアイデア
See the Pen CSS Tooltip Magic by Envato Tuts+ (@tutsplus) on CodePen.
- Author : Envato Tuts+
- Link : CodePen – Demo
💡 実装のポイント
JSは一切使わず、[tooltip]属性と::before(矢印)・::after(content: attr(tooltip)でテキスト表示)だけで完結する構成。表示方向は[flow="up"]〜[flow="right"]の属性値で切り替え、無指定時は上向きがデフォルト。色は::beforeのborder-*-colorと::afterのbackground(どちらも#333)を変えるだけでOK。ホバー時の動きは@keyframes tooltips-vert/tooltips-horzで制御。
Bootstrap setting for tooltip and popover
Bootstrapの標準プラグインを使ったツールチップ・ポップオーバーのアイデア
See the Pen Bootstrap setting for tooltip and popover by Monkey Raptor (@monkeyraptor) on CodePen.
- Author : Monkey Raptor
- Link : CodePen – Demo
💡 実装のポイント
Bootstrap 3.3.5のtooltip/popoverプラグインをそのまま利用する構成。JS側で$("body").tooltip({selector: "[data-toggle='tooltip']"})と.popover()をチェーンして一括初期化しており、各要素にはdata-toggle・data-placement・data-original-title(popoverはdata-contentも)を付与するだけで動く。色は.tooltip.top/.bottom/.left/.right > .tooltip-arrowと.tooltip-innerを上書きして変更。Bootstrap本体とjQueryの読み込みが前提。
Hint- a CSS tooltip library
クラス付与だけで使えるミニマムなCSSツールチップライブラリのアイデア
See the Pen Hint- a CSS tooltip library by Kushagra Gour (@chinchang) on CodePen.
- Author : Kushagra Gour
- Link : CodePen – Demo
💡 実装のポイント
ベースの.hintクラスに加え、.hint--top〜.hint--leftの方向修飾クラスを組み合わせる設計。テキストは::afterのcontent: attr(data-hint)で表示し、位置はmarginのオフセット値で調整している。作者コメントに「Works best in Firefox」とある通り、擬似要素へのtransitionが当時のブラウザ間で挙動差があった名残りなので、モダン環境で使う際は表示崩れがないか確認しておきたい。
Friendly Little Tooltips + [Animation]
SNSアイコンに添えるアニメーション付きツールチップのアイデア
See the Pen Friendly Little Tooltips + [Animation] by Josh Ward (@joshuaward) on CodePen.
- Author : Josh Ward
- Link : CodePen – Demo
💡 実装のポイント
SCSSの&ネスト記法で書かれており、a[data-tooltip]にdata-position="top/right/bottom/left"属性を付けて向きを切り替える構成。::before(テキスト)と::after(矢印)は初期状態で少しずらした位置に配置され、:hover時にtransform: translateY(0)等へ戻ることでスライドインするような動きを演出している。SCSSコンパイルが前提の点に注意。
Social Icons with Tooltip
SNSアイコンごとに色を変えたツールチップのアイデア
See the Pen Social Icons with Tooltip by Jon Milner (@jonmilner) on CodePen.
- Author : Jon Milner
- Link : CodePen – Demo
💡 実装のポイント
※このPenは直接のソース取得がブロックされたため、検索結果に表示された断片からの確認となります。詳細な実装を確認したい場合はPenを直接ご覧ください。断片から分かる範囲では、$color-codepen〜$color-facebookのSCSS変数と@mixin social-icon($color)を使い、アイコンごとの背景色をツールチップの背景色にもそのまま流用する仕組みになっている。.social-icon:hoverで.tooltipのopacityとtransformを変化させて表示する構成。
Tooltip Pagination
ページネーションのドットにツールチップを添えたアイデア
See the Pen Tooltip Pagination by Joe (@dope) on CodePen.
- Author : Joe
- Link : CodePen – Demo
💡 実装のポイント
SCSSで書かれた.pagination__dotに&--active修飾子で選択中のドットを表現。ツールチップ本体は::before(content: attr(data-tooltip)でテキスト表示)と::after(三角の矢印)で構成され、:hover時にtop位置とopacityをtransitionさせて浮き上がるように見せている。ドット数を増減させたい場合はdata-tooltip属性ごと要素を複製すればよい。
Navbar with tooltip on hover
サイドナビゲーションのアイコンにラベルを添えるツールチップのアイデア
See the Pen Navbar with tooltip on hover by Håvard Brynjulfsen (@havardob) on CodePen.
- Author : Håvard Brynjulfsen
- Link : CodePen – Demo
💡 実装のポイントa要素内に隠しておいたspan(ラベルテキスト)をtransform: scale(0)とopacity: 0で非表示にしておき、:hover・:focus時にscale(1)/opacity: 1へ変化させて表示する仕組み。矢印部分はspan::beforeの正方形をrotate(45deg)で回転させて三角に見せている。:focusにも対応しているためキーボード操作でもツールチップが表示される。
Toolbars With Sliding Selection
選択中のツールがスライドするツールバー+ツールチップのアイデア
See the Pen Toolbars With Sliding Selection by Jon Kantner (@jkantner) on CodePen.
- Author : Jon Kantner
- Link : CodePen – Demo
💡 実装のポイント
React(TypeScript)で構築されたツールバーコンポーネント。各ボタンにtoolbar__button-tipという子要素としてツールチップを持たせ、:hover・:focus-visibleで表示する構成。toolbar--vertical修飾クラスの有無でツールチップの表示方向(下向き/横向き)を自動的に切り替えている点が特徴。role="toolbar"や矢印キーでのフォーカス移動にも対応しており、アクセシビリティ面の作りが丁寧。
Emerging Tooltip
SVGのライン描画アニメーションを使ったポップアップ型ツールチップのアイデア
See the Pen Emerging Tooltip by Mikael Ainalem (@ainalem) on CodePen.
- Author : Mikael Ainalem
- Link : CodePen – Demo
💡 実装のポイント.tooltip:hover ~ .popup-textのような隣接兄弟セレクタを使い、ホバー時に.popup-bg・.popup-outline・.popup-textをまとめて表示する構成。吹き出しの輪郭を描くSVGパスにはstroke-dasharray/stroke-dashoffsetをtransitionさせており、線が描かれながら現れるアニメーションになっている。filter: drop-shadow()を複数重ねて立体感を出している点も注目ポイント。
Tooltip animation
クリックで開閉するポップアップ型ツールチップのアイデア
See the Pen Tooltip animation by Milan Raring (@milanraring) on CodePen.
- Author : Milan Raring
- Link : CodePen – Demo
💡 実装のポイント
hoverではなくinput[type="checkbox"]と:checked ~ セレクタを組み合わせた、いわゆる「チェックボックスハック」でクリック開閉を実現している点がこの記事内で唯一の実装。SCSSの@forループで9つの.shape要素にランダムな移動量を与え、開いたときに周囲へ飛び散るような演出を加えている。@keyframes pang-animationやstretch-animationなど複数のキーフレームを組み合わせた凝った構成。
ツールチップとは?
ツールチップとは、ボタンやアイコン、テキストなどの要素にマウスオーバー(またはタップ・フォーカス)したときに、その要素に関する補足情報を小さな吹き出しやラベルとして表示するUIパーツのことです。画面上のスペースを圧迫せずに説明文やラベルを添えられるため、アイコンだけでは意味が伝わりにくい箇所の補足や、フォーム入力時のヒント表示などによく使われます。
実装方法は、CSSの疑似要素(::before・::after)だけで完結するシンプルなものから、Bootstrapなどのフレームワークが提供するプラグインを使うもの、SVGアニメーションを組み合わせた凝った演出まで幅広く存在します。用途や既存のコードベースに合わせて選べるのも魅力です。
CodePenとは?
CodePenは、HTML、CSS、JavaScriptを使ってウェブページのプロトタイプや実装を行うことができるオンラインの開発環境です。
CodePenでは、ウェブ開発者やデザイナーが、ブラウザ上でコードを書きながら、すばやく試行錯誤することができます。ユーザーは自分のプロジェクトを公開し、他のユーザーによるフィードバックを受けたり、共有することもできます。
CodePenには、エディター機能が搭載されており、HTML、CSS、JavaScriptのコードを入力することができます。また、ユーザーが公開したプロジェクトは、フロントエンドの技術を利用して動的な表現やアニメーションを作ることができます。
よくある質問
-
SCSSで書かれているコードはそのまま使えますか?
そのままでは動作しません。SCSSはコンパイルが必要なため、Sassのビルド環境がない場合はCodePen上の「View Compiled CSS」から通常のCSSを書き出して使用してください。
-
Bootstrapのツールチッププラグインを使うには何が必要ですか?
jQueryとBootstrap本体(CSS・JS)の読み込みが前提になります。data-toggle=”tooltip”などの属性を要素に付与し、$(要素).tooltip()で初期化する必要があります。
-
ツールチップはキーボード操作でも表示されますか?
Pen次第です。今回紹介した中では
:hoverだけでなく:focusにも対応している実装があり、その場合はTabキーでの移動時にもツールチップが表示されます。自作する際は:focusや:focus-visibleへの対応も検討してください。 -
hoverではなくクリックで開閉するツールチップも作れますか?
作れます。今回紹介した「Tooltip animation」のように、
input[type="checkbox"]と:checked ~ セレクタを組み合わせた「チェックボックスハック」を使えば、JS不要でクリック開閉のポップアップ型ツールチップを実装できます。