Bootstrap5 プロンプトボックス

 

Bootstrap5 ツールチップ

この記事では、Bootstrap5 のツールチップコンポーネントの使用方法について説明します。ツールチップは、ユーザーが要素にマウスを合わせたときに、その要素に関する追加情報を提供する小さなポップアップボックスを表示するために使用されます。

1. Bootstrap5 ツールチップ - クイックスタート

data 属性と JavaScript を使用してツールチップを作成する方法を紹介します。

HTML


<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="ツールチップの内容">
  ボタン
</button>
    

JavaScript


const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
    

上記は、ボタンにマウスを合わせたときに上部にツールチップを表示する基本的な例です。

2. Bootstrap5 ツールチップ - オプション

ツールチップには、動作をカスタマイズするためのオプションがいくつかあります。

オプション 説明
animation CSS のフェードイン/フェードアウトアニメーションを使用するかどうかを指定します (デフォルト: true)。
delay ツールチップの表示と非表示を遅延させる時間をミリ秒単位で指定します。オブジェクトで指定する場合は、showhide のプロパティでそれぞれ指定します (デフォルト: 0)。
html ツールチップの内容に HTML タグを使用できるかどうかを指定します (デフォルト: false)。
placement ツールチップをトリガー要素に対してどこに配置するかを指定します。指定できる値は、topbottomleftrightauto です (デフォルト: top)。
selector ツールチップをトリガーする要素を指定します。これは、特定の子要素だけにツールチップを適用する場合に役立ちます。
template ツールチップの HTML 構造をカスタマイズします。
title ツールチップの内容を指定します。
trigger ツールチップの表示をトリガーするイベントを指定します。指定できる値は、clickhoverfocusmanual です (デフォルト: hover focus)。

例:遅延と HTML を使用したツールチップ


<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" 
    data-bs-delay='{"show": 1000, "hide": 1500}' data-bs-html="true" title="<strong>太字</strong>のツールチップ">
  ボタン
</button>
    

3. Bootstrap5 ツールチップ - メソッド

ツールチップを JavaScript で制御するためのメソッドを紹介します。

メソッド 説明
Tooltip(options) 新しいツールチップインスタンスを初期化します。
.show() ツールチップを表示します。
.hide() ツールチップを非表示にします。
.toggle() ツールチップの表示状態を切り替えます。
.enable() ツールチップを有効にします。
.disable() ツールチップを無効にします。
.dispose() ツールチップインスタンスを破棄します。

例:ボタンクリックでツールチップを表示/非表示


<button type="button" class="btn btn-secondary" id="myTooltipBtn" data-bs-toggle="tooltip" data-bs-placement="top" title="ツールチップの内容">
  ボタン
</button>
<script>
const myTooltipBtn = document.getElementById('myTooltipBtn')
const tooltip = new bootstrap.Tooltip(myTooltipBtn)

myTooltipBtn.addEventListener('click', () => {
  tooltip.toggle()
})
</script>
    

4. Bootstrap5 ツールチップ - イベント

ツールチップには、表示状態の変化を検知するためのイベントが用意されています。

イベント 説明
show.bs.tooltip ツールチップが表示される前に発生します。
shown.bs.tooltip ツールチップが表示された後に発生します。
hide.bs.tooltip ツールチップが非表示になる前に発生します。
hidden.bs.tooltip ツールチップが非表示になった後に発生します。
inserted.bs.tooltip ツールチップが DOM に挿入された後に発生します。

例:ツールチップの表示時にコンソールログを出力


<button type="button" class="btn btn-secondary" id="myTooltipBtn2" data-bs-toggle="tooltip" data-bs-placement="top" title="ツールチップの内容">
  ボタン
</button>
<script>
const myTooltipBtn2 = document.getElementById('myTooltipBtn2')

myTooltipBtn2.addEventListener('shown.bs.tooltip', () => {
  console.log('ツールチップが表示されました')
})
</script>
    

Bootstrap5 ツールチップに関するQ&A

Q1: ツールチップが表示されません。何が問題でしょうか?

A1: 考えられる原因は以下の通りです。

  • JavaScript が正しく読み込まれていないか、エラーが発生しています。ブラウザの開発者コンソールを確認してください。
  • data-bs-toggle="tooltip" が要素に設定されていません。
  • JavaScript でツールチップを初期化する際に、正しい要素が指定されていません。

Q2: ツールチップの位置を調整するにはどうすればよいですか?

A2: data-bs-placement 属性または placement オプションを使用して、ツールチップの位置を調整できます。指定できる値は、topbottomleftrightauto です。

Q3: 複数の要素に同じツールチップの内容を表示するにはどうすればよいですか?

A3: JavaScript を使用して、同じ内容のツールチップを複数の要素に適用できます。ループ処理を使用して、各要素にツールチップを初期化します。


const tooltipTriggerList = document.querySelectorAll('.my-tooltip-class')
tooltipTriggerList.forEach(element => {
  new bootstrap.Tooltip(element, {
    title: '共通のツールチップの内容'
  })
})