ツールチップ
tooltip.js
このツールチップは、Jason Frame氏による素晴らしいjQuery.tipsyプラグインに影響を受けています。 バージョンが更新され、アニメーションのために画像ではなくCSS3を使用し、 またローカルのタイトル保管用にdata属性を使用するようになりました。
文字長ゼロのタイトルのツールチップが表示されることはありません。
使用例
下記のリンクにカーソルを当てて、ツールチップの動作を確認してください。
Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral.
静的なツールチップ
top、right、bottom、leftの寄せのための4つのオプションが利用可能です。
4方向
<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</button>
<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</button>
<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</button>
<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</button>
パフォーマンス上の理由から、ツールチップとポップオーバーのデータAPIは選択式となっており、 これは開発者自身が初期化処理を行わなければいけないことを意味しています。
ページ上のすべてのツールチップを初期化する一つの方法として、下記のようにdata-toggle属性を使用する方法があります。
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
使用方法
ツールチッププラグインは要求に応じたコンテンツとマークアップを生成し、 そしてデフォルトで発火要素の後ろにツールチップを配置します。
JavaScriptを通じてツールチップを発火する場合は次のようにします。
$('#example').tooltip(options)
マークアップ
ツールチップに必須となるマークアップは、data属性とツールチップに表示させたいHTML要素のtitleのみです。
ツールチップの生成されるマークアップは、位置を必要とするものの(デフォルトでは、プラグインによってtopに設定)シンプルなものです。
<!-- 実際にHTMLとして書くもの -->
<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
<!-- プラグインによって生成されるマークアップ -->
<div class="tooltip top" role="tooltip">
<div class="tooltip-arrow"></div>
<div class="tooltip-inner">
Some tooltip text!
</div>
</div>
複数行のリンク
時に、あなたは複数行を囲うリンクに対してツールチップを追加したいと考えるかもしれません。
ツールチッププラグインのデフォルトの挙動では、水平方向と垂直方向の中央に配置されます。
これを避けるために、アンカー要素にwhite-space: nowrap;を追加してください。
ボタングループとinputグループ内のツールチップに必須となる特別な設定
.btn-groupまたは.input-group内の要素にツールチップを使用する際に、
思わぬ副作用(ツールチップがトリガされた際の要素の幅の間延び/角丸の喪失のような)を避けるためにオプションにcontainer: 'body'(後述)を指定する必要があります。
非表示(hidden)要素でツールチップを表示しようとしないでください
display: none;の要素を対象として$(...).tooltip('show')を実行すると、
ツールチップはふさわしくない場所に位置取りされてしまいます。
ツールチップへのキーボードによるアクセスと支援技術を必要とするユーザーについて
キーボードを使用するユーザーへのナビゲーションと支援技術を必要とする特定のユーザーのために、
リンク、フォーム要素、またはtabindex="0"の属性を持つ任意の要素のような、
キーボードでフォーカス可能な要素にのみツールチップを追加するべきです。
無効化(disabled)要素でのツールチップはラッパー要素を必要とします
disabledまたは.disabled要素にツールチップを追加するために、
その要素を<div>の中に配置し、代わりにその<div>にツールチップを適用します。
オプション
オプションはdata属性またはJavaScriptを介して渡すことが可能で、
data属性であればdata-animation=""のようにして、オプション名をdata-の後ろに追加します。
| 名前 | 型 | デフォルト値 | 説明 |
|---|---|---|---|
| animation | boolean | true | ツールチップにCSSのフェードのアニメーションを適用します。 |
| container | string false |
false |
特定の要素へツールチップを追加します。 例: container: 'body'このオプションはドキュメントのフローの中で、 ウインドウのサイズ変更時にトリガ要素からツールチップが離れてしまうことを防ぎたい場合に特に有用です。 |
| delay | number object |
0 |
ツールチップの表示と非表示の遅延時間(ms)を指定します。 手動でトリガするタイプには適用されません。 数値が提供された場合、表示/非表示の両方に適用されます。
オブジェクトの場合の構造は、 |
| html | boolean | false |
ツールチップへHTMLを挿入します。
もしfalseの場合、jQueryのtextメソッドが使用されます。
XSS攻撃が心配であれば、textを使用して下さい。
|
| placement | string function |
'top' |
ツールチップの位置指定には、top、bottom、left、right、autoの4つがあります。 "auto"が指定された場合、ツールチップが動的に再配置されます。 例えば、placementが"auto left"の場合、ツールチップは可能であれば左に表示し、 そうでなければ右に表示します。
関数が配置場所の決定に使用される場合、
第1引数としてツールチップのDOMノードが、第2引数としてトリガされる要素のDOMノードがそれぞれ割り当てられて呼び出されます。
ここでの |
| selector | string | false | selectorが提供されると、ツールチップのオブジェクトは指定された対象に委譲されます。 実際には、ツールチップを追加する動的なHTMLコンテンツに対して使用されます。 ここと有益な例を参照してください。 |
| template | string | 「説明」に記述 |
初期値のHTML文字列:
ツールチップを作成する際に使用される基盤のHTMLを指定します。
ツールチップの
一番外側のラッパー要素は、 |
| title | string function |
'' |
もし、
もし関数が指定されると、 |
| trigger | string | 'hover focus' |
ツールチップがどのようにトリガされるのかを指定します。- click、hover、focus、manual
空白で区切ることで、複数のトリガ方法を渡すことが可能です。
manualは他のトリガと一緒に指定することは出来ません。
|
| viewport | string object function |
{ selector: 'body', padding: 0 } |
ツールチップをこの要素の範囲内に納めます。
関数が与えられると、トリガ要素のDOMノードを唯一の引数として呼び出されます。
|
ツールチップへの特定のdata属性
前述したように、特定のツールチップのためのオプションはdata属性を使用することで代わりに指定することが可能です。
メソッド
$().tooltip(options)
対象の要素集合に対してツールチップを割り当てます。
.tooltip('show')
その要素のツールチップを表示します。
ツールチップが実際に表示される前に、呼び出し元へ返されます。
(つまり、shown.bs.tooltipイベントの発生前)
これは、ツールチップの"manual"トリガに対して考慮されたものです。
titleの文字列長がゼロのツールチップが表示されることはありません。
$('#element').tooltip('show')
.tooltip('hide')
対象の要素のツールチップを非表示にします。
ツールチップが実際に非表示にされる前に、呼び出し元へ返されます。
(つまり、hidden.bs.tooltipイベントの発生前)
これは、ツールチップの"manual"トリガに対して考慮されたものです。
$('#element').tooltip('hide')
.tooltip('toggle')
対象の要素のツールチップの表示/非表示を切り替えます。
ツールチップが実際に表示/非表示にされる前に、呼び出し元へ返されます。
(つまり、shown.bs.tooltipまたはhidden.bs.tooltipイベントの発生前)
これは、ツールチップの"manual"トリガに対して考慮されたものです。
$('#element').tooltip('toggle')
.tooltip('destroy')
対象の要素のツールチップを非表示にして削除します。 委譲(delegation)を使用するツールチップ(selectorオプションを使用して作成された)は、 子孫のトリガ要素を個別に削除することは出来ません。
$('#element').tooltip('destroy')
イベント
| イベントの型 | 説明 |
|---|---|
| show.bs.tooltip |
showのインスタンスメソッドが呼び出されると、即座にこのイベントが発火されます。
|
| shown.bs.tooltip | ツールチップがユーザーに対して表示された際に、このイベントが発火されます。(CSSトランジションの完了を待ちます) |
| hide.bs.tooltip |
hideのインスタンスメソッドが呼び出されると、即座にこのイベントが発火されます。
|
| hidden.bs.tooltip | ツールチップがユーザーに対しての非表示が完了にされた際に、このイベントが発火されます。(CSSトランジションの完了を待ちます) |
| inserted.bs.tooltip |
DOMにツールチップのテンプレートが追加された際に、show.bs.tooltipイベントの後で、このイベントが発火されます。
|
$('#myTooltip').on('hidden.bs.tooltip', function () {
// do something…
})
docs CC BY 3.0
このページは、ページトップのリンク先のBootstrap公式ドキュメント内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式のドキュメントをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 元のコンテンツと比べてドキュメントの情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報やより分かり易くするための追記を行っている事があります。