GitHub で確認

ツールチップ

CSSとJavaScriptを使用してカスタムBootstrapツールチップを追加するためのドキュメントと例。アニメーションにはCSS3、ローカルタイトルの保存にはdata属性を使用します。

概要

ツールチッププラグインを使用する際の注意点

  • ツールチップは、配置のためにサードパーティライブラリPopperに依存しています。ツールチップを機能させるには、bootstrap.jsの前にpopper.min.jsを含めるか、Popperを含むbootstrap.bundle.min.js / bootstrap.bundle.jsを使用する必要があります!
  • ソースからJavaScriptをビルドしている場合、util.jsが必要です
  • パフォーマンス上の理由から、ツールチップはオプトインです。そのため、**自分で初期化する必要があります**。
  • 長さ0のタイトルを持つツールチップは表示されません。
  • より複雑なコンポーネント(入力グループ、ボタングループなど)でのレンダリングの問題を回避するには、container: 'body'を指定します。
  • 非表示の要素でツールチップをトリガーしても機能しません。
  • .disabledまたはdisabled要素のツールチップは、ラッパー要素でトリガーする必要があります。
  • 複数行にまたがるハイパーリンクからトリガーされた場合、ツールチップは中央に配置されます。この動作を回避するには、<a>white-space: nowrap;を使用します。
  • 対応する要素がDOMから削除される前に、ツールチップを非表示にする必要があります。
  • ツールチップは、シャドウDOM内の要素によってトリガーできます。
デフォルトでは、このコンポーネントは組み込みのコンテンツサニタイザーを使用しており、明示的に許可されていないHTML要素はすべて削除されます。詳細については、JavaScriptドキュメントのサニタイザーセクションを参照してください。
このコンポーネントのアニメーション効果は、prefers-reduced-motionメディアクエリに依存します。アクセシビリティドキュメントの低モーションセクションを参照してください。

すべて理解できましたか?素晴らしいですね。それでは、いくつかの例で動作を確認しましょう。

例:ページ全体でツールチップを有効にする

ページ上のすべてのツールチップを初期化する1つの方法は、data-toggle属性で選択することです。

$(function () {
  $('[data-toggle="tooltip"]').tooltip()
})

下のリンクにカーソルを合わせると、ツールチップが表示されます。

ツールチップ付きのインラインリンクをいくつか示すためのプレースホルダーテキストです。これは単なるフィラーであり、キラーではありません。実際のテキストの存在を模倣するためにここに配置されたコンテンツです。そして、それらはすべて、実際の状況で使用した場合のツールチップの見え方を理解してもらうためです。そのため、リンク上のこれらのツールチップが、あなた自身のサイトまたはプロジェクトで使用したときにどのように機能するかを理解できたことを願っています。

下のボタンにカーソルを合わせると、上、右、下、左の4つのツールチップの方向が表示されます。

<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Tooltip on top">
  Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="right" title="Tooltip on right">
  Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">
  Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="left" title="Tooltip on left">
  Tooltip on left
</button>

カスタムHTMLを追加して

<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
  Tooltip with HTML
</button>

使用方法

ツールチッププラグインは、コンテンツとマークアップをオンデマンドで生成し、デフォルトではトリガー要素の後にツールチップを配置します。

JavaScriptを介してツールチップをトリガーする

$('#example').tooltip(options)
オーバーフローautoscroll

親コンテナがoverflow: autoまたはoverflow: scroll.table-responsiveなど)を持っている場合、ツールチップの位置は自動的に変更しようとしますが、元の配置の位置は保持されます。解決するには、boundaryオプションをデフォルト値の'scrollParent'以外の値('window'など)に設定します。

$('#example').tooltip({ boundary: 'window' })

マークアップ

ツールチップに必要なマークアップは、ツールチップを表示するHTML要素のdata属性とtitleだけです。ツールチップの生成されたマークアップは非常にシンプルですが、位置(デフォルトではプラグインによってtopに設定されています)が必要です。

キーボードと支援技術ユーザーのためのツールチップの機能

ツールチップを追加するべきなのは、伝統的にキーボードでフォーカス可能でインタラクティブなHTML要素(リンクやフォームコントロールなど)だけです。<span>などの任意のHTML要素は、tabindex="0"属性を追加することでフォーカス可能にできますが、これはキーボードユーザーにとって、インタラクティブでない要素に不要で混乱を招くタブストップを追加することになります。また、ほとんどの支援技術は現在、この状況ではツールチップを発表しません。さらに、ツールチップのトリガーとしてhoverのみに依存しないでください。これは、キーボードユーザーにとってツールチップをトリガー不可能にするからです。

<!-- HTML to write -->
<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>

<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
  <div class="arrow"></div>
  <div class="tooltip-inner">
    Some tooltip text!
  </div>
</div>

無効な要素

disabled属性を持つ要素はインタラクティブではないため、ユーザーはツールチップ(またはポップオーバー)をトリガーするためにフォーカス、ホバー、またはクリックできません。回避策として、<div>または<span>ラッパーからツールチップをトリガーする必要があります。理想的には、tabindex="0"を使用してキーボードでフォーカス可能にし、無効な要素のpointer-eventsをオーバーライドします。

<span class="d-inline-block" tabindex="0" data-toggle="tooltip" title="Disabled tooltip">
  <button class="btn btn-primary" style="pointer-events: none;" type="button" disabled>Disabled button</button>
</span>

オプション

オプションは、データ属性またはJavaScriptを介して渡すことができます。データ属性の場合、オプション名にdata-を付加します(例:data-animation="")。

セキュリティ上の理由から、sanitizesanitizeFnwhiteListオプションはデータ属性を使用して提供できません。
名前 デフォルト 説明
animation boolean true ツールチップにCSSフェードトランジションを適用します。
container string | element | false false

ツールチップを特定の要素に追加します。例:container: 'body'。このオプションは、ドキュメントのフロー内でトリガー要素の近くにツールチップを配置できるため、ウィンドウのサイズ変更中にツールチップがトリガー要素から離れてしまうのを防ぐのに特に役立ちます。

delay number | object 0

ツールチップの表示と非表示の遅延(ms)- 手動トリガータイプには適用されません

数値を指定すると、遅延は非表示/表示の両方に適用されます。

オブジェクト構造は次のとおりです:delay: { "show": 500, "hide": 100 }

html boolean false

ツールチップでHTMLを許可します。

trueの場合、ツールチップのtitle内のHTMLタグはツールチップでレンダリングされます。falseの場合、jQueryのtextメソッドを使用してコンテンツをDOMに挿入します。

XSS攻撃を心配する場合は、テキストを使用してください。

placement string | function 'top'

ツールチップの配置方法 - auto | top | bottom | left | right。
autoを指定すると、ツールチップは動的に方向変更されます。

配置を決定するために関数を使用する場合、ツールチップDOMノードを最初の引数として、トリガー要素DOMノードを2番目の引数として呼び出されます。thisコンテキストは、ツールチップインスタンスに設定されます。

selector string | false false セレクターが提供されている場合、ツールチップオブジェクトは指定されたターゲットに委任されます。実際には、これは動的に追加されたDOM要素(jQuery.onサポート)にもツールチップを適用するために使用されます。これ参考になる例を参照してください。
template 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属性が存在しない場合のデフォルトのタイトル値。

関数が指定されている場合、ツールチップが添付されている要素にthis参照を設定して呼び出されます。

trigger string 'hover focus'

ツールチップのトリガー方法 - click | hover | focus | manual。複数のトリガーを渡すことができます。スペースで区切ります。

'manual'は、.tooltip('show').tooltip('hide').tooltip('toggle')メソッドを介してプログラムでツールチップがトリガーされることを示します。この値は、他のトリガーと組み合わせることはできません。

'hover'だけでは、キーボードからツールチップをトリガーできなくなり、キーボードユーザーに同じ情報を伝える代替方法が存在する場合にのみ使用してください。

offset number | string | function 0

ターゲットに対するツールチップのオフセット。

オフセットを決定するために関数を使用する場合、オフセットデータを含むオブジェクトを最初の引数として呼び出されます。関数は同じ構造のオブジェクトを返す必要があります。トリガー要素DOMノードが2番目の引数として渡されます。

詳細については、Popperのoffsetドキュメントを参照してください。

fallbackPlacement string | array 'flip' Popperがフォールバックで使用する位置を指定できます。詳細については、Popperのbehaviorドキュメントを参照してください。
customClass string | function ''

表示時にツールチップにクラスを追加します。これらのクラスは、テンプレートで指定されたクラスに追加して追加されます。複数のクラスを追加するには、スペースで区切ります:'a b'

追加のクラス名を記述した単一の文字列を返す関数も渡すことができます。

境界 文字列 | 要素 'scrollParent' ツールチップのオーバーフロー制約境界。'viewport''window''scrollParent'の値、またはHTMLElement参照(JavaScriptのみ)を受け入れます。詳細については、PopperのpreventOverflowドキュメントを参照してください。
サニタイズ boolean true サニタイズの有効化または無効化。有効にすると、'template'および'title'オプションがサニタイズされます。JavaScriptドキュメントのサニタイザーセクションを参照してください。
ホワイトリスト オブジェクト デフォルト値 許可される属性とタグを含むオブジェクト
sanitizeFn null | 関数 null ここで独自のサニタイズ関数を指定できます。これは、専用のライブラリを使用してサニタイズを実行する場合に便利です。
popperConfig null | オブジェクト null BootstrapのデフォルトのPopper設定を変更するには、Popperの設定を参照してください。

個々のツールチップのデータ属性

個々のツールチップのオプションは、上記で説明したように、データ属性を使用して指定することもできます。

メソッド

非同期メソッドとトランジション

すべてのAPIメソッドは非同期であり、トランジションを開始します。トランジションが開始されるとすぐに呼び出し元に返りますが、終了する前です。さらに、トランジション中のコンポーネントへのメソッド呼び出しは無視されます

詳細については、JavaScriptドキュメントを参照してください。.

$().tooltip(options)

要素コレクションにツールチップハンドラーをアタッチします。

.tooltip('show')

要素のツールチップを表示します。ツールチップが実際に表示される前(つまり、shown.bs.tooltipイベントが発生する前)に呼び出し元に返ります。これは、ツールチップの「手動」トリガーと見なされます。長さゼロのタイトルを持つツールチップは表示されません。

$('#element').tooltip('show')

.tooltip('hide')

要素のツールチップを非表示にします。ツールチップが実際に非表示になる前(つまり、hidden.bs.tooltipイベントが発生する前)に呼び出し元に返ります。これは、ツールチップの「手動」トリガーと見なされます。

$('#element').tooltip('hide')

.tooltip('toggle')

要素のツールチップを切り替えます。ツールチップが実際に表示または非表示になる前(つまり、shown.bs.tooltipまたはhidden.bs.tooltipイベントが発生する前)に呼び出し元に返ります。これは、ツールチップの「手動」トリガーと見なされます。

$('#element').tooltip('toggle')

.tooltip('dispose')

要素のツールチップを非表示にし、破棄します。デリゲーションを使用するツールチップ(selectorオプションを使用して作成されたツールチップ)は、子孫のトリガー要素で個別に破棄できません。

$('#element').tooltip('dispose')

.tooltip('enable')

要素のツールチップを表示できるようにします。ツールチップはデフォルトで有効になっています。

$('#element').tooltip('enable')

.tooltip('disable')

要素のツールチップを表示できなくします。ツールチップは、再度有効にしない限り表示できません。

$('#element').tooltip('disable')

.tooltip('toggleEnabled')

要素のツールチップの表示または非表示を切り替えます。

$('#element').tooltip('toggleEnabled')

.tooltip('update')

要素のツールチップの位置を更新します。

$('#element').tooltip('update')

イベント

イベントタイプ 説明
show.bs.tooltip このイベントは、showインスタンスメソッドが呼び出された直後に発生します。
shown.bs.tooltip このイベントは、ツールチップがユーザーに見えるようになったときに発生します(CSSトランジションが完了するまで待ちます)。
hide.bs.tooltip このイベントは、hideインスタンスメソッドが呼び出された直後に発生します。
hidden.bs.tooltip このイベントは、ツールチップがユーザーから非表示になった後に発生します(CSSトランジションが完了するまで待ちます)。
inserted.bs.tooltip このイベントは、show.bs.tooltipイベントの後、ツールチップテンプレートがDOMに追加されたときに発生します。
$('#myTooltip').on('hidden.bs.tooltip', function () {
  // do something...
})