ポップオーバー(Popovers) v5.0.0設定変更
iOSにあるようなBootstrapのポップオーバーをサイトのどの要素にも追加するための解説と例。
※"v5.0.0"での変更はv5.0.0-alpha版、v5.0.0-beta版での変更も含みます。
※"v5.3.0"での変更はv5.3.0-alpha版での変更も含みます。
概要(Overview)
ポップオーバー・プラグインを使用するときに知っておくべきこと:
- ポップオーバーは、サードパーティのライブラリであるPopperを利用して位置情報を取得している。ポップオーバーが動作するためには
bootstrap.min.js
の前にpopper.min.jsを組み込むか、Popperを中に組み込んでいるbootstrap.bundle.min.js
を使用する必要がある。 - ポップオーバーは、依存関係として、ポップオーバー・プラグインが必要。
- ポップオーバーは、パフォーマンス上の理由で任意で取得されるため、自分で初期化する必要がある(そのため実行コードが必要)。
title
とcontent
の長さがゼロのポップオーバーは表示されない。container: 'body'
を指定すると、より複雑なコンポーネント(インプットグループやボタングループなど)のレンダリングの問題が回避できる。- 非表示要素のポップオーバーは機能しない。
.disabled
やdisabled
要素のポップオーバーは、それを囲む要素で起動する必要がある。- 複数行にまたがるアンカーから起動されたときは、ポップオーバーはアンカー全体の幅の中央に配置される。この現象を回避するには、
<a>
に.text-nowrap
を使用する。 - ポップオーバーは、対応する要素がDOMから削除される前に非表示にする必要がある。
- ポップオーバーは、シャドウDOM内の要素のために起動できる。
prefers-reduced-motion
メディアクエリに依存。詳細はアクセシビリティのモーションを小さくするに記載。
ポップオーバーがどのように動作するかいくつか実例を表示。
実例(Examples)
ポップオーバーを有効にする(Enable popovers)v5.2.0設定変更
前記のように、ポップオーバーを使用する前に初期化する必要がある。ページ上のすべてのポップオーバーを初期化する1つの方法は、次のように data-bs-toggle
属性で選択:
Bootstrap5.2.0の実行コード例 緑背景が5.2.0での変更箇所
JavaScriptconst popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))
※Bootstrap5.1.3の実行コード例 赤背景が5.2.0での変更箇所
JavaScriptvar popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl)
})
※Bootstrap4.xの実行コード例
JavaScript$(function () {
$('[data-toggle="popover"]').popover()
})
【設定】
bootstrap.min.js
より前に Popper の設定が必要(バンドル版のbootstrap.bundle.min.js
のみでも可)
※ 各jsファイルをCDNで設置する方法は、クイックスタートに記載
【変更履歴】
- 【v5.0.0-alpha1】
- JavaScriptの記述をjQueryに依存しない方法に変更
- 【v5.0.0-beta1】
data-
属性に名前空間bs-
を追加[data-toggle="popover"]
⇒[data-bs-toggle="popover"]
- 【v5.2.0】
- JavaScriptの記述をES6(ES2015)に変更
ポップオーバーの設定(Live demo)v5.2.0デザイン変更
前記のスニペットと同様のJavaScriptを使用して、次のライブポップオーバーをレンダリング。タイトルは title
属性で設定され、本文のコンテンツは data-bs-content
で設定される。
title
か data-bs-title
のいずれかを自由にご使用下さい。title
が使用されている場合、要素がレンダリングされるときに、Popperは自動的にそれを data-bs-title
に置き換える。
見本
Bootstrap5.xの設定例 緑背景がv5.0.0-beta1での変更箇所
HTML<a class="btn btn-lg btn-danger" data-bs-toggle="popover" title="ポップオーバーのタイトル" data-bs-content="ポップオーバーの説明。もう一度ボタンを押すと閉じます。">ココを押して下さい</a>
【設定】
- ボタンタグの要素に
[data-bs-toggle="popover"][title="ポップオーバーのタイトル"][data-bs-content="ポップオーバーの説明"]
を入れる
※タイトルはなくても可 [title]
は[data-bs-title]
でも可
【変更履歴】
- 【v5.0.0-beta1】
data-
属性に名前空間bs-
を追加[data-toggle="popover"]
⇒[data-bs-toggle="popover"]
[data-content="ポップオーバーの説明"]
⇒[data-bs-content="ポップオーバーの説明"]
- 【v5.2.0】
border-radius
の値を調整したので、若干丸みを帯びたデザインに変更
ポップオーバーの方向設定(Four directions)
上、右、下、左の4つのオプションを使用できる。RTL(右書き)でBootstrapを使用すると、方向が反転する。方向を変更するには、data-bs-placement
を設定。
見本
※もう一度ボタンを押すと閉じます。
Bootstrap5.xの設定例 緑背景がv5.0.0-beta1での変更箇所
上に出るポップオーバー<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="上に出るポップオーバー">ポップオーバー(上)</button>
左に出るポップオーバー<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="左に出るポップオーバー">ポップオーバー(左)</button>
下に出るポップオーバー<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="下に出るポップオーバー">ポップオーバー(下)</button>
右に出るポップオーバー<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="右に出るポップオーバー">ポップオーバー(右)</button>
【設定】
data-bs-toggle="popover"
と同じ要素にdata-bs-placement="{side}"
({side}
はleft
(左)、top
(上)、bottom
(下)、right
(右)の中から選択)を入れる
【変更履歴】
- 【v5.0.0-beta1】
data-
属性に名前空間bs-
を追加data-placement="{side}"
⇒data-bs-placement="{side}"
カスタム container
(Custom container
)v5.2.0設定変更、「container
オプションの使用例」から変更、v5.2.1一部追加
親要素にポップオーバーと干渉するスタイルがある場合は、カスタムの container
を指定して、ポップオーバーのHTMLがその要素内に表示されるようにする必要がある。これは、一般的にレスポンシブテーブル、インプットグループなどがある。
Bootstrap5.2.0~の設定例 緑背景が5.2.0での変更箇所
JavaScriptconst popover = new bootstrap.Popover('.example-popover', {
container: 'body'
})
※Bootstrap5.1.xの設定例 赤背景が5.2.0での変更箇所
JavaScriptvar popover = new bootstrap.Popover(document.querySelector('.example-popover'), {
container: 'body'
})
※Bootstrap4.xの設定例
JavaScript$(function () {
$('.example-popover').popover({
container: 'body'
})
})
明示的なカスタム container
を設定する必要があるもう1つの状況は、モーダルダイアログ内のポップオーバーであり、ポップオーバー自体がモーダルに追加されるようにする。これは、インタラクティブな要素を含むポップオーバーにとって特に重要。モーダルダイアログはフォーカスをトラップするため、ポップオーバーがモーダルの子要素でない限り、ユーザーはこれらのインタラクティブな要素にフォーカスしたりアクティブにしたりすることができない。
設定例 v5.2.1追加
JavaScriptconst popover = new bootstrap.Popover('.example-popover', {
container: '.modal-body'
})
【変更履歴】
- 【v5.0.0-alpha1】
- JavaScriptの記述をjQueryに依存しない方法に変更
- 【v5.2.0】
- JavaScriptの記述をES6(ES2015)に変更
- 【v5.2.1】
- モーダルダイアログ内のポップオーバーの設定方法を追加
カスタムポップオーバー(Custom popovers)v5.2.0新設
CSS変数を使用して、ポップオーバーの外観をカスタマイズできる。data-bs-custom-class="custom-popover"
を使用してカスタムクラスを設定し、カスタムの外観を調査し、それを使用してローカルのCSS変数を再定義。
ポップオーバーの外観をPrimaryにする例
見本
設定例
CSS.custom-popover {
--bs-popover-max-width: 200px;
--bs-popover-border-color: var(--bs-primary);
--bs-popover-header-bg: var(--bs-primary);
--bs-popover-header-color: var(--bs-white);
--bs-popover-body-padding-x: 1rem;
--bs-popover-body-padding-y: .5rem;
}
HTML<button type="button" class="btn btn-secondary" data-bs-toggle="popover" data-bs-placement="right" data-bs-custom-class="custom-popover" title="カスタムポップオーバー" data-bs-content="このポップオーバーは、CSS変数を経由してテーマ化されている。">
カスタムポップオーバー
</button>
次のクリックで閉じる(Dismiss on next click)
triggerに focus
を使用して、切替要素とは別の要素の次のクリックでポップオーバーを閉じる。
<a>
要素のみで、<button>
は使用不可。また、tabindex
属性を必ず記述する。
見本
Bootstrap5.xの設定例 緑背景がv5.0.0-beta1での変更箇所
HTML<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" title="却下するポップアップ" data-bs-content="ボタンを押しても閉じません。それ以外のところを押して閉じて下さい。">ココを押して下さい</a>
Bootstrap5.2.0~の設定例 緑背景が5.2.0での変更箇所
JavaScriptconst popover = new bootstrap.Popover('.popover-dismiss', {
trigger: 'focus'
})
※Bootstrap5.1.xの設定例 赤背景が5.2.0での変更箇所
JavaScriptvar popover = new bootstrap.Popover(document.querySelector('.popover-dismiss'), {
trigger: 'focus'
})
※Bootstrap4.xの設定例
JavaScript$('.popover-dismiss').popover({
trigger: 'focus'
})
【設定】
- HTMLコードに入れる場合は、
a[data-bs-toggle="popover"]
にtabindex="0"
とdata-bs-trigger="focus"
を入れる
【変更履歴】
- 【v5.0.0-beta1】
data-
属性に名前空間bs-
を追加data-trigger="focus"
⇒data-bs-trigger="focus"
- 【v5.2.0】
- JavaScriptの記述をES6(ES2015)に変更
無効な要素(Disabled elements)v5.0.0-beta2設定変更
disabled
属性を持つ要素はインタラクティブではないため、ユーザーがカーソルを移動したりクリックしてポップオーバー(またはツールチップ)を起動できない。回避策として、ラッピング要素の <div>
や <span>
からポップオーバーを起動することを推奨。理想的には、tabindex ="0"
を使用してキーボードフォーカスを可能にする。
無効化されたポップオーバーを起動する場合、無効化された要素をクリックすることを期待しないため、ポップオーバーがユーザーに即座に視覚的フィードバックとして表示されるように、data-bs-trigger="hover focus"
も選択できる。
見本
Bootstrap5.xの設定例 緑背景が変更箇所
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="無効ボタンのポップオーバー">
<button type="button" class="btn btn-primary" disabled>無効ボタン</button>
</span>
※Bootstrap4.xの設定例 赤背景が変更箇所
<span class="d-inline-block" data-toggle="popover" data-content="無効ボタンのポップオーバー">
<button type="button" class="btn btn-primary" style="pointer-events: none;" disabled>無効ボタン</button>
</span>
【設定】
span[tabindex="0"][data-bs-toggle="popover"][data-bs-trigger="hover focus"][data-bs-content]
>button.btn.btn-{themecolor}[disabled]
【変更履歴】
- 【v5.0.0-beta1】
data-
属性に名前空間bs-
を追加[data-toggle="popover"]
⇒[data-bs-toggle="popover"]
[data-content]
⇒[data-bs-content]
- 【v5.0.0-beta2】
<span>
に[tabindex="0"][data-bs-trigger="hover focus"]
を入れる[style="pointer-events: none;"]
の設定を削除
CSS v5.0.0-beta3追加、v5.2.0Sassから名称変更
CSS変数(Variables)v5.2.0新設
Bootstrapの進化するCSS変数アプローチの一環として、ポップオーバーは、リアルタイムのカスタマイズを強化するために、.popover
でローカルCSS変数を使用するようにした。CSS変数の値はSassを経由して設定されるため、Sassのカスタマイズも引き続きサポートされる。
デフォルトの設定
scss/_popover.scss 内 popover-css-vars の設定--#{$prefix}popover-zindex: #{$zindex-popover};
--#{$prefix}popover-max-width: #{$popover-max-width};
@include rfs($popover-font-size, --#{$prefix}popover-font-size);
--#{$prefix}popover-bg: #{$popover-bg};
--#{$prefix}popover-border-width: #{$popover-border-width};
--#{$prefix}popover-border-color: #{$popover-border-color};
--#{$prefix}popover-border-radius: #{$popover-border-radius};
--#{$prefix}popover-inner-border-radius: #{$popover-inner-border-radius};
--#{$prefix}popover-box-shadow: #{$popover-box-shadow};
--#{$prefix}popover-header-padding-x: #{$popover-header-padding-x};
--#{$prefix}popover-header-padding-y: #{$popover-header-padding-y};
@include rfs($popover-header-font-size, --#{$prefix}popover-header-font-size);
--#{$prefix}popover-header-color: #{$popover-header-color};
--#{$prefix}popover-header-bg: #{$popover-header-bg};
--#{$prefix}popover-body-padding-x: #{$popover-body-padding-x};
--#{$prefix}popover-body-padding-y: #{$popover-body-padding-y};
--#{$prefix}popover-body-color: #{$popover-body-color};
--#{$prefix}popover-arrow-width: #{$popover-arrow-width};
--#{$prefix}popover-arrow-height: #{$popover-arrow-height};
--#{$prefix}popover-arrow-border: var(--#{$prefix}popover-border-color);
Sass変数(Sass variables)v5.2.0変数から名称変更
デフォルトの設定
scss/_variables.scss 内 popover-variables の設定$popover-font-size: $font-size-sm;
$popover-bg: var(--#{$prefix}body-bg);
$popover-max-width: 276px;
$popover-border-width: var(--#{$prefix}border-width);
$popover-border-color: var(--#{$prefix}border-color-translucent);
$popover-border-radius: var(--#{$prefix}border-radius-lg);
$popover-inner-border-radius: $popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}); // stylelint-disable-line function-disallowed-list
$popover-box-shadow: var(--#{$prefix}box-shadow);
$popover-header-font-size: $font-size-base;
$popover-header-bg: var(--#{$prefix}secondary-bg);
$popover-header-color: $headings-color;
$popover-header-padding-y: .5rem;
$popover-header-padding-x: $spacer;
$popover-body-color: var(--#{$prefix}body-color);
$popover-body-padding-y: $spacer;
$popover-body-padding-x: $spacer;
$popover-arrow-width: 1rem;
$popover-arrow-height: .5rem;
// fusv-disable
// Bootstrap5.2.0では非推奨のCSS変数
$popover-arrow-color: $popover-bg;
$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent);
// fusv-enable
【変更履歴】
- 【v5.2.0】
- 使用する変数の削減により
$popover-arrow-color
,$popover-arrow-outer-color
は非推奨に
- 使用する変数の削減により
使用方法(Usage)v5.2.0設定変更
JavaScriptでポップオーバーを有効にする:
Bootstrap5.2.0~の設定例 緑背景が5.2.0での変更箇所
JavaScriptconst exampleEl = document.getElementById('example')
const popover = new bootstrap.Popover(exampleEl, options)
※Bootstrap5.1.xの設定例 赤背景が5.2.0での変更箇所
JavaScriptvar exampleEl = document.getElementById('example')
var popover = new bootstrap.Popover(exampleEl, options)
※Bootstrap4.xの設定例
JavaScript$('#example').popover(options)
【変更履歴】
- 【v5.0.0-alpha1】
- JavaScriptの記述をjQueryに依存しない方法に変更
- 【v5.2.0】
- JavaScriptの記述をES6(ES2015)に変更
ポップオーバーは、従来からキーボードでフォーカス可能な対話型のHTML要素(リンクやフォームコントロールなど)にのみ追加し、キーボードや支援技術のユーザーが利用しやすいようにする。他のHTML要素は tabindex="0"
を追加することによってフォーカス可能にできるが、これはキーボードユーザーにとって非対話型の要素に迷惑で紛らわしいタブストップを作成する可能性があり、現在ほとんどの支援技術はこの状況下でポップオーバーを発動しない。さらにポップオーバーの起動を hover
だけに依存しないこと。
html
オプションでポップオーバーに過剰な量のコンテンツを追加しないように。ポップオーバーが表示されると、そのコンテンツは aria-describedby
属性で起動要素に結び付けられ、ポップオーバーの全てのコンテンツが一つの流れとして長く途切れることないまま支援技術のユーザーに伝えられる。
ポップオーバーはキーボードのフォーカス順序を管理せず、その配置はDOM内でランダムになり得るため、対話型の要素(フォームやリンクなど)を追加する場合は、非論理的なフォーカス順序になったり、キーボードユーザーにとってポップオーバーのコンテンツ自体が完全に届かなくなったりすることがあるので注意が必要。どうしてもこれらの要素を使用しなければならない場合は、代わりにモーダルダイアログの使用をご検討下さい。
オプション(Options)v5.0.0-beta1オプション追加、v5.0.0-beta2一部変更
オプションは、データ属性かJavaScriptを経由して渡すことができるため、data-bs-animation="{value}"
のように、オプション名を data-bs-
に追加できる。データ属性を経由してオプションを渡す場合は、必ずオプション名の命名規則をキャメルケース(単語の先頭を大文字にする)からケバブケース(単語をハイフンでつなぐ)にご変更下さい。例:data-bs-customClass="beautifier"
ではなく、data-bs-custom-class="beautifier"
を使用する。
Bootstrap 5.2.0以降、すべてのコンポーネントは、JSON文字列として単純なコンポーネント構成を格納できる実験的な予約済データ属性 data-bs-config
をサポート。要素に data-bs-config='{"delay":0, "title":123}'
と data-bs-title="456"
属性がある場合、最終的な title
値は 456
になり、個別のデータ属性は data-bs-config
で指定された値を再定義する。さらに、既存のデータ属性には、data-bs-delay='{"show":0,"hide":150}'
のようなJSON値を格納できる。
allowList
, sanitize
, sanitizeFn
オプションは、データ属性を使用して指定できない。
名前 | タイプ | デフォルト | 説明 |
---|---|---|---|
allowList v5.0.0-alpha2名称変更 |
object | デフォルト値 | 許可された属性とタグを含むオブジェクト |
animation |
boolean | true |
ポップオーバーにCSSフェード遷移を適用true :有効/false :無効 |
boundary v5.0.0-beta2変更 |
string | element | 'clippingParents' |
ポップオーバーのオーバーフローを制約する境界(PopperのpreventOverflow修飾子にのみ適用)。デフォルトでは 'clippingParents' であり、HTMLElementリファレンスが受け入れ可能(JavaScript経由のみ)。詳細については、PopperのpreventOverflowドキュメントに記載。 |
container |
string | element | false | false |
ポップオーバーを特定の要素に追加。例:container: 'body' このオプションはウィンドウサイズ変更時にポップオーバーがトリガー要素から浮かないようにし、トリガー要素の近くにポップオーバーの配置を可能にするという点で特に便利。 |
content |
string | element | function | '' |
ポップオーバーのテキスト内容。 functionが指定された場合、 this 参照セットをポップオーバーと接続されている要素にセットして呼び出される。 |
customClass v5.0.0-beta1追加 |
string | function | '' |
表示されたら、ポップオーバーにクラスを追加する。これらのクラスは、テンプレートで指定されたクラスに加えて追加されるので注意。複数のクラスを追加するには、それらをスペースで区切る:'class-1 class-2' 追加のクラス名を含む単一の文字列を返す関数を渡すことも可能。 |
delay |
number | object | 0 |
ポップオーバーの表示と非表示の遅延時間(1000分の1秒単位) - triggerでmanualを指定した場合は適用されない。 数字が指定された場合、hide/showの両方に遅延が適用。 オブジェクト構造は次のとおり: delay: { "show": 500, "hide": 100 } |
fallbackPlacements v5.0.0-beta2変更 |
array | ['top', 'right', 'bottom', 'left'] |
配列内の配置のリストを(優先順に)提供することにより、フォールバック配置を定義。詳細については、Popperのbehaviorドキュメントに記載。 |
html |
boolean | false |
ポップオーバーにHTMLを挿入。falseの場合、innerText プロパティがコンテンツをDOMに挿入するために使用される。XSS攻撃が心配な場合はテキストをご使用下さい。 true :有効/false :無効 |
offset v5.0.0-beta2復活 |
array | string | function | [0, 8] |
ターゲットに対するポップオーバーンのオフセット値。 関数を使用してオフセットを決定する場合、Popperの配置、参照とPopperの四角形を最初の引数として含むオブジェクトを使用して呼び出される。トリガー要素のDOMノードが2番目の引数として渡される。関数は、2つの数値を持つ配列を返す必要がある:[スキッド, 距離] 詳細については、Popper.jsのoffsetドキュメントに記載。 |
placement |
string | function | 'right' |
ポップオーバーの配置方法 - auto | top | bottom | left | rightauto が指定されると、動的にポップオーバーの向きが変更。functionを使用して配置決定する場合は、ポップオーバーDOMノードが第1引数として、トリガー要素DOMノードが第2引数として呼び出される。 this コンテキストは、ポップオーバーインスタンスに設定される。 |
popperConfig v5.0.0-beta2変更 |
null | object | function | null |
BootstrapのデフォルトのPopperの構成を変更。詳細は、Popperの構成に記載。 関数を使用してPopper構成を作成すると、BootstrapのデフォルトのPopper構成を含むオブジェクトで呼び出される。これは、デフォルトを使用して独自の構成とマージするのに役立つ。この関数は、Popperの構成オブジェクトを返す必要がある。 |
sanitize |
boolean | true |
サニタイズを有効/無効にする。有効にすると、'template' , 'content' , 'title' オプションはサニタイズされる。true :有効/false :無効 |
sanitizeFn |
null | function | null |
自分用のサニタイズ機能を提供できる。サニタイズを実行するために専用のライブラリを使用したい場合に役立つ。詳細は、JavaScriptのサニタイザーに記載。 |
selector |
string | false | false |
セレクタが提供された場合、ポップオーバーオブジェクトは指定されたターゲットに付与される。実際には、動的に追加されるDOM要素にもポップオーバーを適用するために使用される(jQuery.on のサポート)。ココと有益な実例に記載。注意:title 属性はセレクタとして使用しないこと。 |
template v5.0.0-alpha1一部変更 |
string | '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
ポップオーバーを作成するときに使用するベースのHTML。 ポップオーバーの title は .popover-header に挿入される。ポップオーバーの content は .popover-body に挿入される。.popover-arrow は、ポップオーバーの矢印になる。一番外側の包括要素には、 .popover クラスと role="tooltip" を入れる必要がある。 |
title |
string | element | function | '' |
ポップオーバーのタイトル。 functionを設定した場合、 this 参照セットをポップオーバーが接続されている要素にセットして呼び出される。 |
trigger |
string | 'click' |
ポップオーバーの起動方法 - click | hover | focus | manual 複数の起動方法を指定;スペースで区切る。 manual は他と組み合わせられない。 |
個々のポップオーバーのデータ属性
上記で説明したように、個々のポップオーバーのオプションは、データ属性(data-bs-オプション名
)を使用して指定できる(sanitize
, sanitizeFn
, allowList
を除く)。
popperConfig
でfunctionを使用 v5.0.0-beta2追加、v5.2.0設定変更
Bootstrap5.2.0~の設定例 緑背景が5.2.0での変更箇所
JavaScriptconst popover = new bootstrap.Popover(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// 必要に応じてdefaultBsPopperConfigを使用...
// newPopperConfigを返す
}
})
※Bootstrap5.1.xの設定例 赤背景が5.2.0での変更箇所
var popover = new bootstrap.Popover(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// 必要に応じてdefaultBsPopperConfigを使用...
// newPopperConfigを返す
}
})
【変更履歴】
- 【v5.0.0-alpha1】
template
のうち.arrow
は.popover-arrow
に名称変更
- 【v5.0.0-alpha2】
whiteList
はallowList
に名称変更
- 【v5.0.0-beta1】
customClass
が追加(v4.6.0でバックポート)- Popper v2対応により、
offset
は廃止fallbackPlacement
はfallbackPlacements
に変更
- 【v5.0.0-beta2】
fallbackPlacements
で要素の配置を改善するため、設定タイプをarray
に、デフォルト値を['top', 'right', 'bottom', 'left']
に変更boundary
のデフォルトの設定がscrollParent
からclippingParent
に変更offset
を復活popperConfig
のタイプにfunction
を追加
- 【v5.2.0】
- JavaScriptの記述をES6(ES2015)に変更
メソッド(Methods)v5.0.0-alpha1設定変更、v5.0.2メソッド追加
メソッド | 説明 |
---|---|
disable |
要素のポップオーバーが表示されるようにする機能を削除。ポップオーバーは、再度有効になっている場合にのみ表示できる。 |
dispose |
要素のポップオーバーを非表示にしたり破棄したりする(DOM要素に保存されているデータを削除)。(selector オプションを使用して作成される)デリゲートを使用するポップオーバーは、子孫トリガー要素で個別に破棄できない。 |
enable |
要素のポップオーバーに表示する機能を与える。デフォルトで有効。 |
getInstance |
DOM要素に関連付けられたポップオーバー・インスタンスを取得できる静的メソッド。 |
getOrCreateInstance v5.0.2追加 |
DOM要素に関連付けられたポップオーバー・インスタンスを取得したり、初期化されていない場合に新しいインスタンスを作成したりできる静的メソッド。 |
hide |
要素のポップオーバーを非表示にする。実際にポップオーバーが非表示になる前(つまり、hidden.bs.popover イベント発動前)に呼び出し元に戻る。これは、ポップオーバーの"manual"トリガーとみなされる。 |
setContent v5.2.0追加 |
初期化後にポップオーバーのコンテンツを変更する方法を提供。 |
show |
要素のポップオーバーを表示。実際にポップオーバーが表示される前(つまり、show.bs.popover イベント発動前)に呼び出し元に戻る。これは、ポップオーバーの"manual"トリガーとみなされる。タイトルとコンテンツが両方とも長さゼロのポップオーバーは表示されない。 |
toggle |
要素のポップオーバーを切り替える。実際にポップオーバーが表示か非表示になる前(つまり、shown.bs.popover か hidden.bs.popover イベント発動前)に呼び出し元に戻る。これは、ポップオーバーの"manual"トリガーとみなされる。 |
toggleEnabled |
要素のポップオーバーが表示か非表示になるように切り替える。 |
update |
要素のポップオーバーの位置を更新。 |
Bootstrap5.3.3の設定例 緑背景が5.2.0以降の変更箇所
JavaScript// getOrCreateInstanceの実例
const popover = bootstrap.Popover.getOrCreateInstance('#example') // Bootstrapポップオーバー・インスタンスを返す
// setContentの実例
popover.setContent({
'.popover-header': '別のタイトル',
'.popover-body': '別の内容'
})
※Bootstrap5.1.xの設定例 赤背景が5.2.0での変更箇所
JavaScript// getOrCreateInstanceの実例
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl)
// setContentの実例
myPopover.setContent({
'.popover-header': '別のタイトル',
'.popover-body': '別の内容'
})
setContent
メソッドは object
引数を受け入れる。各プロパティキーはツールチップテンプレート内の有効な string
セレクタであり、関連する各プロパティ値は string
| element
| function
| null
にできる。
【変更履歴】
- 【v5.0.0-alpha1】
$().popover('xxx')
⇒popover.xxx()
getInstance
メソッドが追加
- 【v5.0.2】
getOrCreateInstance
メソッドが追加
- 【v5.2.0】
setContent
メソッドが追加- JavaScriptの記述をES6(ES2015)に変更
- 【v5.3.3】
myPopover.setContent
⇒popover.setContent
イベント(Events)
イベントタイプ | 説明 |
---|---|
hide.bs.popover |
hide のインスタンス・メソッドが呼び出されると直ちに発動。 |
hidden.bs.popover |
ポップオーバーがユーザーから非表示になったときに発動(完全にCSS遷移が完了するまで待機)。 |
inserted.bs.popover |
ポップオーバーテンプレートがDOMに追加されたときに show.bs.popover イベントの後に発動。 |
show.bs.popover |
show のインスタンス・メソッドが呼び出されると直ちに発動。 |
shown.bs.popover |
ユーザーにポップオーバーが表示されたときに発動(完全にCSS遷移が完了するまで待機)。 |
使用例 v5.2.0設定変更
JavaScriptconst myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
// 何かをする...
})