CSSだけでツールチップ表示…本当にJavaScript不要なやり方

CSSだけでツールチップ表示してみたい

  • JavaScriptコードの追加が不要
  • jQuery/Bootstrapもいらない
  • 少しHTML構成に手を加えるだけ

ツールチップ表示のために色々したくないし、
jQuery/Bootstrapとかも使いたくなかったです。

ということでCSSオンリーでツールチップ表示

その方法とコード例を一通り紹介していきます。

Bootstrapのツールチップは問題がある

初めはBootstrapを使おうとしてました。

▼ ここに作り方が載っている

▼ こんなツールチップが表示できる

Bootstrapで表示できるツールチップの例。実はスマホ表示で致命的な問題点がある…

このBootstrapのツールチップには問題があります。

どういう問題点があるかというと…

  • Popperという別ライブラリも必要なこと
  • CSSだけで初期化ができないこと
  • モバイルだとクリック時に表示されてしまう

特に最後のが致命的です。

モバイル(スマホ・タブレット)でもPC同様、ホバー時に表示されるのを期待してました。ところがボタンクリック時に表示されてしまいます。

クリック時には画面遷移とかモーダル表示なども起こります。つまりモバイルでもホバー時にツールチップとして機能しないってことです。(この認識で正しいはず)

あとPopper.jsに依存するのも少し面倒

だからCSSオンリーでツールチップ表示してみます。

1.ツールチップ表示のHTML要素作成

初めにツールチップ要素を作成します。

▼ ミニマムなHTML構成はこういう感じ

いくつかポイントがあります。

  • ._tooltip-trigger
    この要素でホバーイベントが起こったときにツールチップが表示される。PC・スマホで挙動は変わらない。あとボタン要素でなくても何でもOK
  • .-tooltip
    ホバー時に表示したいツールチップの内容。オプションとして _left , _top, _bottom , _right  の4つの位置が指定できる(後述)

ここでは要素下にツールチップ表示します。

だからこういうHTML構成にしました。

2.ツールチップ表示用のCSSを追加する

それでは具体的なCSSコードについて

ボトム表示されるツールチップを作るとします。

その場合は次のCSSコードを追加するだけです。

▼ こういうCSSコードを追加

やってることはひたすら地道です。

全て説明してるとキリがないけど、重要なのはホバー時だけツールチップを表示してることです。CSSでは :hover疑似要素でそういうことができます。

あとツールチップの矢印はborderプロパティによって表現してます。これは色々な場面で出てくるテクニックです。

あとは特に説明するところなし

実際のツールチップの見た目/動作例

こういう見た目になりました。

▼ 下表示されるツールチップの場合

Bootstrap・JavaScriptを一切不要で表示できる下方向のツールチップの例

▼ こういう動作をしてくれる(gif)

下方向のツールチップの動作例Gif。JavaScriptは一切使っていない

上記GifはPCでの表示ですが、モバイルでもホバー時(要素にタッチしてる場合)に表示されます。Bootstrapのツールチップの欠点を克服できました。

背景色とかテキスト色は各自の好みで…

上下左右方向のツールチップの作り方

ここでは下方向のツールチップ表示のみです。

もちろん上(下)左右に表示することも可能です。

▼ 上方向にツールチップ表示

ボタンホバー時に上方向に表示されるツールチップ

▼ 左方向にツールチップ表示

ボタンホバー時に左方向に表示されるツールチップ

▼ 右方向にツールチップ表示

ボタンホバー時に右方向に表示されるツールチップ

それも上記CSSを改良すれば可能です。

▼ このようなCSSに改良すればOK

▼ 上下左右方向のツールチップの挙動(gif)

上下左右それぞれのツールチップの動作例。このgifのようにボタンホバー時に表示されるが、JavaScript・Bootstrapは一切使用していない

以上、CSSだけでツールチップを作成表示でした。

Bootstrapを使えない環境などで役立ちます。ではまた