ポップオーバー
popover.js
iPadにあるような小さなオーバーレイを、副次的な説明を加えたい要素に追加します。
タイトルとコンテンツの両方の文字列長がゼロのポップオーバーが表示されることはありません。
プラグイン依存
ポップオーバーは、あなたのBootstrapのバージョンに含まれるツールチッププラグインを必要とします。
選択式の機能
パフォーマンス上の理由から、ツールチップとポップオーバーのデータAPIは選択式となっており、
これは開発者自身が初期化処理を行わなければいけないことを意味しています。
ページ上のすべてのツールチップを初期化する一つの方法として、下記のようにdata-toggle属性を使用する方法があります。
$(function () {
$('[data-toggle="popover"]').popover()
})
ボタングループとinputグループ内のツールチップに必須となる特別な設定
.btn-groupまたは.input-group内の要素にポップオーバーを使用する際に、
思わぬ副作用(ツールチップがトリガされた際の要素の幅の間延び/角丸の喪失のような)を避けるためにオプションにcontainer: 'body'(後述)を指定する必要があります。
非表示(hidden)要素でツールチップを表示しようとしないでください
display: none;の要素を対象として$(...).popover('show')を実行すると、
ポップオーバーはふさわしくない場所に位置取りされてしまいます。
無効化(disabled)要素でのポップオーバーはラッパー要素を必要とします
disabledまたは.disabled要素にポップオーバーを追加するために、
その要素を<div>の中に配置し、代わりにその<div>にポップオーバーを適用します。
複数行のリンク
時に、あなたは複数行を囲うリンクに対してポップオーバーを追加したいと考えるかもしれません。
ポップオーバープラグインのデフォルトの挙動では、水平方向と垂直方向の中央に配置されます。
これを避けるために、アンカー要素にwhite-space: nowrap;を追加してください。
使用例
静的なポップオーバー
top、right、bottom、leftの寄せのための4つのオプションが利用可能です。
Popover top
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
Popover right
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
Popover bottom
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
Popover left
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
ライブデモ
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
4つの方向
<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
Popover on left
</button>
<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
Popover on top
</button>
<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus
sagittis lacus vel augue laoreet rutrum faucibus.">
Popover on bottom
</button>
<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
Popover on right
</button>
次のクリックで反応しないようにする
focusトリガを使用して、ユーザーによる次のクリックでポップオーバーが反応しないようにします。
次のクリックが反応しないために必要なマークアップ
クロスブラウザとクロスプラットフォームにおいて問題なく動作させるためには、
<button>タグでは無く、<a>タグを使用しなければいけません。
また、role="button"とtabindex属性も含めなければいけません。
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
使用方法
JavaScriptを通して、ポップオーバーを有効化します。
$('#example').popover(options)
オプション
オプションはdata属性またはJavaScriptを通して渡すことが可能です。
data属性はdata-animation=""のようにして、data-の後ろにオプション名を追加します。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| animation | boolean | true | ポップオーバーにCSSのフェードトランジションを適用します。 |
| container | string false |
false |
特定の要素にポップオーバーを追加します。 例: container: 'body'このオプションはドキュメントのフローの中で、 ウインドウのサイズ変更時にトリガ要素からポップオーバーが離れてしまうことを防ぎたい場合に特に有用です。 |
| content | string function |
'' |
もし関数が指定された場合、
その |
| delay | number object |
0 |
ポップオーバーの表示と非表示を遅延させます(マイクロ秒)。 手動(manual)トリガーのタイプには適用されません。 数値(number)が提供された場合、遅延は表示/非表示の両方に適用されます。
オブジェクトの場合、構造は次のようになります。 |
| html | boolean | false |
ポップオーバーへHTMLを挿入します。
falseの場合は、jQueryのtextメソッドがDOMへのコンテンツの挿入に使用されます。
XSS攻撃が心配であれば、これを使用してください。
|
| placement | string function |
'right' |
どのようにポップオーバーを配置するのかを指定します(top / bottom / left / right / auto)。 "auto"が指定された場合、ポップオーバーは動的に再順応されます。 例えば、もしplacementを"auto left"とすると、ポップオーバーは可能であれば左に表示され、 そうでなければ右に表示されます。
関数(function)がplacementに指定された場合、
ポップオーバーのDOMノードが第1引数、トリガされる要素のDOMノードが第2引数として呼び出されます。
この |
| selector | string | false | セレクタ(selector)が提供された場合、ポップオーバーのオブジェクトは指定された対象へ委譲されます。 実際には、ポップオーバーを追加する動的なHTMLコンテンツに対して使用されます。 ここと有益な例を参照してください。 |
| template | string | 「説明」に記述 |
初期値のHTML文字列:
ポップオーバーを作成する際に使用される基盤のHTMLを指定します。
ポップオーバーの
ポップオーバーのコンテンツは、
一番外側のラッパー要素は、 |
| title | string function |
'' |
title属性が提供されない場合、デフォルトのタイトルになります。
もし関数が指定されると、this参照にポップオーバーが割り当てられた要素が設定されて呼び出されます。
|
| trigger | string | 'click' |
ポップオーバーがどのようにトリガされるのかを指定します。(clic / hover / focus / manual)
空白で区切ることで、複数のトリガ方法を渡すことが可能です。
manualは他のトリガと一緒に指定することは出来ません。
|
| viewport | string object function |
{ selector: 'body', padding: 0 } |
ポップオーバーをこの要素の範囲内に納めます。
関数が与えられると、トリガ要素のDOMノードを唯一の引数として呼び出されます。
|
ポップオーバーへの特定のdata属性
前述したように、特定のポップオーバーのためのオプションはdata属性を使用することで代わりに指定することが可能です。
メソッド
$().popover(options)
対象の要素集合に対してポップオーバーを初期化します。
.popover('show')
その要素のポップオーバーを表示します。
ポップオーバーが実際に表示される前に、呼び出し元へ返されます。
(つまり、shown.bs.popoverイベントの発生前)
これは、ポップオーバーの"manual"トリガに対して考慮されたものです。
titleとcontentの文字列長がゼロのポップオーバーが表示されることはありません。
$('#element').popover('show')
.popover('hide')
対象の要素のポップオーバーを非表示にします。
ポップオーバーが実際に非表示にされる前に、呼び出し元へ返されます。
(つまり、hidden.bs.popoverイベントの発生前)
これは、ポップオーバーの"manual"トリガに対して考慮されたものです。
$('#element').popover('hide')
.popover('toggle')
対象の要素のポップオーバーの表示/非表示を切り替えます。
ポップオーバーが実際に表示/非表示にされる前に、呼び出し元へ返されます。
(つまり、shown.bs.popoverまたはhidden.bs.popoverイベントの発生前)
これは、ポップオーバーの"manual"トリガに対して考慮されたものです。
$('#element').popover('toggle')
.popover('destroy')
対象の要素のポップオーバーを非表示にして削除します。 委譲(delegation)を使用するポップオーバー(selectorオプションを使用して作成された)は、 子孫のトリガ要素を個別に削除することは出来ません。
$('#element').popover('destroy')
イベント
| イベントの型 | 説明 |
|---|---|
| show.bs.popover |
showのインスタンスメソッドが呼び出されると、即座にこのイベントが発火されます。
|
| shown.bs.popover | ツールチップがユーザーに対して表示された際に、このイベントが発火されます。(CSSトランジションの完了を待ちます) |
| hide.bs.popover |
hideのインスタンスメソッドが呼び出されると、即座にこのイベントが発火されます。
|
| hidden.bs.popover | ツールチップがユーザーに対しての非表示が完了にされた際に、このイベントが発火されます。(CSSトランジションの完了を待ちます) |
| inserted.bs.popover |
DOMにツールチップのテンプレートが追加された際に、show.bs.popoverイベントの後で、このイベントが発火されます。
|
$('#myPopover').on('hidden.bs.popover', function () {
// do something…
})
docs CC BY 3.0
このページは、ページトップのリンク先のBootstrap公式ドキュメント内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式のドキュメントをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 元のコンテンツと比べてドキュメントの情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報やより分かり易くするための追記を行っている事があります。