Bootstrap4.xの使い方をBootstrap3.xからの変更箇所を交えて解説しています。
ツールチップ(Tooltips) v4.0.0設定変更
CSS3を使ってCSS3とアニメーション用のカスタムBootstrapツールチップを追加し、ローカルタイトルストレージ用のデータ属性を追加するための解説と例。
概要(Overview)
ツールチップ・プラグインを使用するときに知っておくべきこと:
- ツールチップは、サードパーティのライブラリであるPopperを利用して位置情報を取得しているため、ツールチップが動作するためには
bootstrap.js
かbootstrap.min.js
の前にpopper.min.jsを組み込むか、代わりにPopperを内部に含むbootstrap.bundle.js
かbootstrap.bundle.min.js
を使用する必要がある。 - ソースファイルからJavaScriptを構築する場合は、
util.js
が必要。 - ツールチップは、パフォーマンス上の理由で任意で取得されるため、自分で初期化する必要がある(そのため実行コードが必要)。
title
の長さがゼロのツールチップは表示されない。container: 'body'
を指定すると、より複雑なコンポーネント(インプットグループやボタングループなど)のレンダリングの問題が回避可能。- 非表示要素のツールチップは機能しない。
.disabled
またはdisabled
要素のツールチップは、それを囲む要素で起動する必要がある。サンプル- 複数行にまたがるハイパーリンクから起動されると、ツールチップは中央に配置されるので、この動作を回避するには、
<a>
に.text-nowrap
を使用すること。 - ツールチップは、対応する要素がDOMから削除される前に非表示にする必要がある。
- ツールチップは、シャドウDOM内の要素のために起動可能。
prefers-reduced-motion
メディアクエリに依存。詳細はアクセシビリティのモーションを小さくするを参照。
いくつかの実例を使ってどのように動作するか次に表示。
どこでもツールチップを有効にする例(Example: Enable tooltips everywhere)
ページ上のすべてのツールチップを初期化する1つの方法は、data-toggle
属性でそれらを選択すること。
実行コード
JavaScriptの場合$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
HTMLの場合<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script>
$('[data-toggle="tooltip"]').tooltip()
</script>
【設定】
bootstrap.min.js
より前にPopper
の設定が必要
※Popper
をCDNで設置する場合は、クイックスタートを参照
【変更履歴】
- 【v4.0.0】
- Popper の設置が必要
ツールチップの設定(Examples)v4.0.0一部変更
ツールチップを表示するには、以下のリンクにカーソルを合わせること:
見本
ツールチップを使用した横並びリンクを示すプレースホルダーテキスト。これは今では単なるつなぎであり、大層なものではない。実際のテキストの存在を模倣するためだけにここに配置されたコンテンツである。そして、これらすべては、実際の状況で使用したときにツールチップがどのように見えるかを示すためのもの。従って、リンク上のこれらのツールチップを自分のサイトやプロジェクトで使用すると、実際にどのように機能するか理解できると思う。
設定例
HTMLツールチップを使用したdata-toggle="tooltip" title="デフォルトのツールチップ">横並びリンクを示すプレースホルダーテキスト。これは今では単なるつなぎであり、大層なものではない。 data-toggle="tooltip" title="もう一つのツールチップ">実際のテキストの存在を模倣するためだけにここに配置されたコンテンツである。そして、これらすべては、実際の状況で使用したときにツールチップがどのように見えるかを示すためのもの。従って、data-toggle="tooltip" title="ここにももう1つ">リンク上のこれらのツールチップを自分のサイトやプロジェクトで使用すると、実際にdata-toggle="tooltip" title="最後のツールチップ!">どのように機能するか理解できると思う。
【設定】
a[href="#"][data-toggle="tooltip"][title="ツールチップ文"]
下のボタンにカーソルを合わせると、上、右、下、左の4つのツールチップの指示が表示。
1. ツールチップの方向設定
見本
設定例
上に出るツールチップ<button type="button" class="btn btn-secondary mb-2 mb-md-0" data-toggle="tooltip" data-placement="top" title="上に出るツールチップ">ツールチップ(上)</button>
右に出るツールチップ<button type="button" class="btn btn-secondary mb-2 mb-md-0" data-toggle="tooltip" data-placement="right" title="右に出るツールチップ">ツールチップ(右)</button>
下に出るツールチップ<button type="button" class="btn btn-secondary mb-2 mb-md-0" data-toggle="tooltip" data-placement="bottom" title="下に出るツールチップ">ツールチップ(下)</button>
左に出るツールチップ<button type="button" class="btn btn-secondary mb-2 mb-md-0" data-toggle="tooltip" data-placement="left" title="左に出るツールチップ">ツールチップ(左)</button>
【設定】
data-toggle="tooltip"
と同じ要素にdata-placement="xxx"
(xxx
はleft
(左)、top
(上)、bottom
(下)、right
(右)の中から選択)を入れる
2. HTML付きツールチップ
カスタムHTMLを追加:
見本
設定例
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-html="true" title="<b>HTML</b><u>付き</u><em>ツールチップ</em>"</span>>
HTML付きツールチップ
</button>
【設定】
title
にHTMLを入れることも可能
使用方法(Usage)
ツールチッププラグインはオンデマンドでコンテンツとマークアップを生成し、デフォルトではツールチップをそのトリガー要素の後に置く。
JavaScript経由でツールチップを起動:
JavaScript$('#example').tooltip(options)
auto
と scroll
のオーバーフロー
.table-responsive
のように、親コンテナに overflow:auto
または overflow:scroll
がある場合、ツールチップの位置は自動的に変更されるが、元の配置の位置は保持される。これを解決するには、boundary
オプションをデフォルト値の 'scrollParent'
以外('window'
など)に設定すること。
JavaScript$('#example').tooltip({ boundary: 'window' })
マークアップ(Markup)
ツールチップに必要なマークアップは、ツールチップを表示したいHTML要素に data
属性と title
をつけるだけ。生成されるツールチップのマークアップはかなりシンプルだが、表示される位置の設定が必要(デフォルトでは、プラグインによって top
に設定)。
キーボードや支援技術ユーザー向けのツールチップを作る
伝統的にキーボードにフォーカス可能で対話型のHTML要素(リンクやフォームコントロールなど)にのみツールチップを追加すること。tabindex="0"
属性を追加することで任意のHTML要素(<span>
など)でフォーカス可能になるが、これはキーボードユーザーの非対話型の要素ではタブ移動が停止され迷惑と混乱が生じる可能性がある。この状況では、支援技術は現在のところツールチップを表示できない。さらに、ツールチップの起動を hover
だけに頼らないこと。これによりツールチップがキーボードユーザーのために起動することを不可能にする。
<!--HTMLコードの記載 -->
<a href="#" data-toggle="tooltip" title="いくつかのツールチップテキスト!">この上にマウスポインターを移動</a>
<!-- プラグインによる一般的なマークアップ -->
<div class="tooltip bs-tooltip-top bs-tooltip-top-docs" role="tooltip">
<div class="arrow"></div>
<div class="tooltip-inner">
いくつかのツールチップテキスト!
</div>
</div>
無効な要素(Disabled elements)
disabled
属性を持つ要素はインタラクティブではないため、ユーザーがフォーカス、ホバーまたはクリックしてツールチップ(またはポップオーバー)を起動することは不可。回避策として tabindex="0"
を使用して理想的にキーボードフォーカスを可能にしたラッパーの <div>
または <span>
からツールチップを起動し、無効化された要素の pointer-events
を上書きする必要がある。
見本
設定例
<span class="d-inline-block" tabindex="0" data-toggle="tooltip" title="無効要素のツールチップ">
<button type="button" class="btn btn-primary" style="pointer-events: none;" disabled>無効ボタン</button>
</span>
オプション(Options)サンプル v4.4.0一部追加
オプションは、データの属性やJavaScriptを使用して渡すことが可能。データ属性の場合は、data-animation=""
のように、data-
にオプション名を追加。
sanitize
, sanitizeFn
, whiteList
オプションは、データ属性を使用して指定することは不可。
名前 | タイプ | デフォルト | 説明 |
---|---|---|---|
animation | boolean | true | ツールチップにCSSのフェード遷移を適用true :有効/false :無効 |
container v4.0.0一部変更 |
string | element | false | false | ツールチップを特定の要素に追加。例:container: 'body' このオプションでは、ウィンドウサイズ変更時にツールチップがトリガー要素から浮かないようにし、トリガー要素の近くにツールチップの配置を可能にするという点で特に便利。 |
delay | number | object | 0 | ツールチップの表示と非表示の遅延時間(1000分の1秒単位) - triggerでmanualを指定した場合は適用されない。 数字が指定された場合、hide/showの両方に遅延が適用。 オブジェクト構造は次のとおり: delay: { "show": 500, "hide": 100 } |
html | boolean | false | ツールチップにHTMLを許可。 trueの場合、ツールチップの title のHTMLタグがツールチップに表示される。falseの場合、jQueryの text メソッドがコンテンツをDOMに挿入するために使用される。XSS攻撃が心配な場合はテキストを使用すること。 true :有効/false :無効 |
placement | string | function | 'top' | ツールチップの配置方法 - auto | top | bottom | left | rightauto が指定されると、動的にポップオーバーの向きが変更。function配置を決定するために使用されるとき、ツールチップDOMノードを第1引数として、起動要素DOMノードを第2引数として呼び出す。 this コンテキストは、ツールチップヒントインスタンスに設定される。 |
selector v4.0.0一部変更 |
string | false | false | selectorが提供されている場合、ツールチップオブジェクトが指定されたターゲットに付与される。実際には、動的に追加されたDOM要素(jQuery.on サポート)にツールチップを適用するために使用。ココと有益な実例を参照。 |
template v4.0.0一部変更 |
string | '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>' |
ツールチップを作成するときに使用するベースのHTML。 ツールチップの title が .tooltip-inner に挿入される。.arrow は、ツールチップの矢印になる。一番外側の包括要素には、 .tooltip クラスと role="tooltip" を入れる必要がある。 |
title | string | element | function | '' | title 属性が存在しない場合のデフォルトのタイトル値。functionを設定した場合、 this 参照セットをツールチップが接続されている要素にセットして呼び出される。 |
trigger | string | 'hover focus' | ツールチップの起動方法 - click | hover | focus | manual 複数の起動方法を指定:スペースで区切る。 'manual' は、.tooltip('show') , .tooltip('hide') , .tooltip('toggle') メソッドを使用して、ツールチップがプログラムによって起動されるようにする。この値を他の起動方法と組み合わせることは不可。'hover' を単独で使用すると、キーボードでは操作できないツールチップが表示されるので、キーボードユーザーに対して同じ情報を伝達するための代替方法が存在する場合にのみ使用する必要がある。 |
offset v4.0.0追加 v4.3.0一部変更 |
number | string | function | 0 |
ターゲットに対するツールチップのオフセット値。 オフセットを決定するために関数を使用する場合は、最初の引数としてオフセットデータを含むオブジェクトで呼び出される。関数は同じ構造を持つオブジェクトを返さなければならない。切替要素のDOMノードは、2番目の引数として渡される。 詳細については、Popperのoffsetドキュメントに記載。 |
fallbackPlacement v4.0.0追加 |
string | array | 'flip' | Popperがフォールバックで使用する位置を指定できるようにする。詳細については、Popperのbehaviorドキュメントに記載。 |
customClass v4.6.0追加 |
string | function | '' | 表示されたら、ツールチップにクラスを追加する。これらのクラスは、テンプレートで指定されたクラスに加えて追加されるので注意。複数のクラスを追加するには、それらをスペースで区切る:'a b' 追加のクラス名を含む単一の文字列を返す関数を渡すことも可能。 |
boundary v4.0.0追加 |
string | element | 'scrollParent' | ツールチップのオーバーフローを制約する境界。'viewport' , 'window' , 'scrollParent' またはHTMLElementリファレンス(JavaScriptのみ)の値を受け入れる。詳細については、PopperのpreventOverflowドキュメントに記載。 |
sanitize v4.3.1追加 |
boolean | true | サニタイズを有効/無効にする。有効にすると、'template' , 'content' , 'title' オプションはサニタイズされる。true :有効/false :無効 |
whiteList v4.3.1追加 |
object | デフォルト値 | 許可された属性とタグを含むオブジェクト |
sanitizeFn v4.3.1追加 |
null | function | null | 自分用のサニタイズ機能を提供することが可能。サニタイズを実行するために専用のライブラリを使用したい場合に役立つ。 |
popperConfig v4.4.0追加 |
null | object | null | BootstrapのデフォルトのPopperの構成を変更。詳細は、Popperの構成を参照。 |
【変更履歴】
- 【v4.0.0】
offset
,fallbackPlacement
,boundary
が追加viewport
は廃止container
のタイプにelement
、selector
のタイプにfalse
がそれぞれ追加template
のうち.tooltip-arrow
は.arrow
に
offset
のタイプにfunction
(関数)が追加
sanitize
,sanitizeFn
,whiteList
が追加
popperConfig
が追加
customClass
が追加
個々のツールチップのデータ属性
上記で説明したように、個々のツールチップのオプションは、データ属性(data-オプション名
)を使用して指定することが可能(sanitize
, sanitizeFn
, whiteList
を除く)。
メソッド(Methods)サンプル
非同期メソッドと遷移
すべてのAPIメソッドは、非同期で遷移を開始する。それらは移行が始まるとすぐに呼び出し元に戻るが、終了する前に呼び出し元に戻る。さらに、遷移コンポーネントのメソッド呼び出しは無視される。
詳細については、Javascriptのドキュメントに記載。
$().tooltip(options)
要素コレクションにツールチップのハンドラーを付ける。
.tooltip('show')
要素のツールチップを表示。実際にツールチップが表示される前(つまり shown.bs.tooltip
イベント発動前)に呼び出し元に戻る。これは、ツールチップの"manual"トリガーとみなされる。タイトルが長さゼロのツールチップは表示されない。
JavaScript$('#element').tooltip('show')
.tooltip('hide')
要素のツールチップを非表示にする。ツールチップが実際に非表示になる前(つまり hidden.bs.tooltip
イベント発動前)に呼び出し元に戻る。これは、ツールチップの"manual"トリガーとみなされる。
JavaScript$('#element').tooltip('hide')
.tooltip('toggle')
要素のツールチップを切り替える。ツールチップが実際に表示または非表示になる前(つまり shown.bs.tooltip
または hidden.bs.tooltip
イベント発動前)に呼び出し元に戻る。これは、ツールチップの"manual"トリガーとみなされる。
JavaScript$('#element').tooltip('toggle')
.tooltip('dispose')
v4.0.0名称変更
要素のツールチップを非表示にしたり破棄したりする。(selector
オプションを使用して作成される)デリゲートを使用するツールチップは、子孫トリガー要素で個別に破棄できない。
JavaScript$('#element').tooltip('dispose')
.tooltip('enable')
v4.0.0追加
要素のツールチップに表示する機能を与える。デフォルトで有効。
JavaScript$('#element').tooltip('enable')
.tooltip('disable')
v4.0.0追加
要素のツールチップが表示されるようにする機能を削除。ツールチップは、再度有効になっている場合にのみ表示可能。
JavaScript$('#element').tooltip('disable')
.tooltip('toggleEnabled')
v4.0.0追加
要素のツールチップが表示または非表示になるように切り替える。
JavaScript$('#element').tooltip('toggleEnabled')
.tooltip('update')
v4.0.0追加
要素のツールチップの位置を更新。
JavaScript$('#element').tooltip('update')
【変更履歴】
- 【v4.0.0】
.tooltip('destroy')
⇒.tooltip('dispose')
に名称変更.tooltip('enable')
,.tooltip('disable')
,.tooltip('toggleEnabled')
,.tooltip('update')
が追加
イベント(Events)
イベントタイプ | 説明 |
---|---|
show.bs.tooltip | このイベントは、show のインスタンス・メソッドが呼び出されると直ちに発動。 |
shown.bs.tooltip | このイベントは、ユーザーにツールチップが表示されたときに発動(完全にCSS遷移が完了するまで待機)。 |
hide.bs.tooltip | このイベントは、hide のインスタンス・メソッドが呼び出されると直ちに発動。 |
hidden.bs.tooltip | このイベントは、ツールチップがユーザーから非表示になったときに発動(完全にCSS遷移が完了するまで待機)。 |
inserted.bs.tooltip | このイベントは、ツールチップテンプレートがDOMに追加されたときに show.bs.tooltip イベントの後に発動。 |
使用例
JavaScript$('#myTooltip').on('hidden.bs.tooltip', function () {
// 何かをする...
})
ページ移動
- 前のページ
トースト - 次のページ
ページがありません