ツールチップを簡単に表示できる Tippy.js の使い方
はじめに
ツールチップを簡単に表示できる atomiks/tippyjs を触る機会があったので、簡単に使い方を整理した。
本記事は tippy v5 系を利用しているので、最新 v6 系(2020/08/01 現在)と挙動や設定が異なる可能性あり
TL;DR
tippy(<target>, { content: 'my tooltip' })
でツールチップを設定<target>
はセレクタ(#id
など)でも、Node(document.querySelector('#id')
など)でも OK
content
に HTML も設定可能tippy(<target>, { content: '<strong>my tooltip</strong>' })
tippy(<target>, { content: 'my<br>tooltip', allowHTML: true })
- 既存テーマを利用する場合は CSS を読み込んで
theme: 'light
のように指定
目次
環境・条件
- Google Chrome バージョン: 78.0.3904.108(Official Build)(64 ビット)
- popper v1.16.0
- tippy v5.1.2
詳細
公式ドキュメント にまとまっている。
セットアップ
npm
でインストール
1 | $ npm i tippy.js |
CDN の場合は下記
1 | <script src="https://unpkg.com/popper.js@1"></script> |
テーマも CDN から読み込む場合は下記
1 | <!-- 使いたいものだけ読めば OK --> |
使い方
基本
ツールチップを表示したい要素に対して tippy
を実行するだけ。
1 | <button>my button</button> |
1 | tippy('button', { |
data-tippy-content
を設定しておくと、content
を指定しなくても良い
1 | <button data-tippy-content="button!!"> |
1 | tippy('button'); |
ターゲットの指定
セレクタでも、document.querySelector
などで取得した要素でも良い。
参考: Target types
1 | tippy('#id'); |
HTML の埋め込み
content
に HTML を埋め込むことも可能
参考: HTML Content
1 | tippy('#id', { |
この機能を利用して、ツールチップ内に画像を設定することもできる
1 | tippy('#id', { |
「途中で改行だけしたい」などの場合は allowHTML
を合わせて指定する
1 | tippy('#id', { |
画像の Lazy Load
onShow
オプションと組み合わせて、画像の Lazy Load もできる
参考: Lazy load image inside Tooltip? #562
1 | tippy('#id', { |
テーマの指定
テーマがいくつか用意されているので、オプションで指定すれば変更できる。見た目の違いは ここ で確認できる。
参考: Themes
ただし、CSS を読み込む必要があるので注意。npm
でインストールした場合は、node_modules/tippy.js/themes/
に CSS ファイルがあるはず。
1 | $ ls node_modules/tippy.js/themes/ |
CDN から読み込む場合は下記
1 | <!-- 使いたいものだけ読めば OK --> |
テーマは theme
オプションで指定
1 | tippy('#id', { |
テーマの作成
自分で CSS を設定し、テーマを作成することもできる。
参考: Creating a theme
.tippy-tooltip.xxxx-theme
で CSS を設定して、theme: xxxx
を指定するだけっぽい。(未確認)
1 | .tippy-tooltip.tomato-theme { |
1 | tippy('button', { |
利用可能オプション
All Props にまとまっている。
内容を再設定する
setContent
で再設定可能
1 | const instance = tippy('#id', { content: '1st' }); |
複数要素にまとめてツールチップを設定した場合は、forEach
などと組み合わせる。
1 | const instances = tippy('.button', { content: '1st' }); |
無効化/有効化
一時的に無効化したり、再び有効化したりする場合には disable
, enable
を使う。
1 | const instance = tippy('#id', { content: 'hello' }); |
表示/非表示
関連: Tippy.js でインスタンス生成せずにツールチップを隠す
ツールチップを破棄
destroy
でツールチップを破棄できる
1 | const instance = tippy('#id', { content: '1st' }); |
その他・メモ
アニメーションを設定したり、Lifecycle Hooksでゴニョゴニョしたり、Ajax でゴニョゴニョしたり、いろいろできるっぽい。
まとめ
tippy(<target>, { content: 'my tooltip' })
でツールチップを設定<target>
はセレクタ(#id
など)でも、Node(document.querySelector('#id')
など)でも OK
content
に HTML も設定可能tippy(<target>, { content: '<strong>my tooltip</strong>' })
tippy(<target>, { content: 'my<br>tooltip', allowHTML: true })
- 既存テーマを利用する場合は CSS を読み込んで
theme: 'light
のように指定
参考文献
- Tippy.js - Tooltip and Popover Library
- atomiks/tippyjs: Highly customizable tooltip and popover library
- Lazy load image inside Tooltip? · Issue #562 · atomiks/tippyjs
関連記事
- Tippy.js でインスタンス生成せずにツールチップを隠す
- Chart.js(vue-chartjs) でツールチップの表示内容を変更
- Vue.js で日本語変換での誤発火を抑止しつつ Enter キーで Submit
- Vue で子コンポーネントのメソッドをコールする
- apertureless/vue-chartjs でチャートの高さ(や幅、サイズ)を変更
- Chart.js で X軸, Y軸の値をカスタマイズ
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア