Bootstrap ポップアップボックス

Bootstrap モーダル

Bootstrap モーダルは、ダイアログボックスを簡単に作成できる効率的な方法です。現在のページから移動することなく、ユーザーに情報を伝えたり、ユーザーから情報を取得したりするために使用できます。この記事では、Bootstrap モーダルの使用方法について、作成、表示、非表示、設定、カスタマイズなどを含めて詳しく説明します。

基本的な例

最小限のコードで基本的な Bootstrap モーダルを作成する方法は次のとおりです。

<!-- モーダルを起動するボタン -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  モーダルを表示する
</button>

<!-- モーダル -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">モーダルのタイトル</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="閉じる"></button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">閉じる</button>
        <button type="button" class="btn btn-primary">保存</button>
      </div>
    </div>
  </div>
</div>
  • data-bs-toggle="modal" 属性は、要素がクリックされたときにモーダルを表示するように Bootstrap に指示します。

  • data-bs-target="#exampleModal" 属性は、表示するモーダルの ID を指定します。

モーダルの HTML 構造は、主に3つの部分で構成されています。

  • .modal: モーダル全体を表すコンテナ。

  • .modal-dialog: モーダルのサイズと位置を制御するために使用されます。

  • .modal-content: モーダルの実際のコンテンツが含まれています。

モーダルコンテンツ

モーダルの内容は必要に応じてカスタマイズできますが、通常は次のものが含まれます。

  • .modal-header: モーダルのタイトルと閉じるボタンが含まれています。

    • <h1> から <h6> タグを使用してタイトルを定義できます。

    • 閉じるボタンは <button> 要素を使用し、class="btn-close" と data-bs-dismiss="modal" 属性を追加します。

  • .modal-body: モーダルの主要コンテンツを表示するために使用され、テキスト、画像、フォームなどを含めることができます。

  • .modal-footer: 通常、"確認" や "キャンセル" などの操作ボタンが配置されます。

    • 任意の種類のボタンを使用し、対応するイベントハンドラを追加できます。

サイズ

定義済みの CSS クラスを使用して、モーダルのサイズを制御できます。

  • .modal-sm: 小さなモーダル。

  • .modal-lg: 大きなモーダル。

  • .modal-xl: 超大型モーダル。

これらのクラスを .modal-dialog 要素に追加するだけです。

垂直方向の中央揃え

デフォルトでは、Bootstrap モーダルは自動的に垂直方向に中央揃えされます。垂直方向の位置をカスタマイズする必要がある場合は、以下の方法を使用できます。

  • CSS クラス .modal-dialog-centered を使用する: このクラスを .modal-dialog 要素に追加すると、モーダルはビューポートに対して垂直方向に中央揃えされます。

  • JavaScript コードで動的に設定する: Modal.handleUpdate() メソッドを使用して、モーダルの位置を更新できます。

スクロール可能なコンテンツ

モーダルのコンテンツが長すぎる場合は、以下の方法でスクロールバーを有効にできます。

  • .modal-dialog に overflow-y: auto; を設定します。

  • .modal-body に max-height と overflow-y: auto; を設定します。

JavaScript を使用する

JavaScript コードを使用してモーダルを制御できます。

  • Modal.getInstance(element) を使用してモーダルインスタンスを取得します。element はモーダルの HTML 要素です。

  • 以下のメソッドを使用してモーダルを制御します。

    • show(): モーダルを表示します。

    • hide(): モーダルを非表示にします。

    • toggle(): モーダルの表示状態を切り替えます。

イベント

Bootstrap モーダルは、以下のイベントをサポートしています。

イベント名 説明
show.bs.modal モーダルの表示が開始されるときにトリガーされます。
shown.bs.modal モーダルが完全に表示された後にトリガーされます。
hide.bs.modal モーダルの非表示が開始されるときにトリガーされます。
hidden.bs.modal モーダルが完全に非表示になった後にトリガーされます。

これらのイベントを使用して、カスタム操作を実行できます。たとえば、モーダルが表示される前にデータを読み込んだり、モーダルが非表示になった後にフォームデータをクリアしたりできます。

設定

JavaScript コードを使用して、モーダルのデフォルトの動作を設定できます。

オプション タイプ デフォルト値 説明
backdrop boolean true 背景の遮蔽レイヤーを表示するかどうか。
keyboard boolean true Esc キーを押してモーダルを閉じることができるかどうか。
focus boolean true モーダルの表示後に自動的にフォーカスを取得するかどうか。

メソッド

メソッド 説明
show() モーダルを表示します。
hide() モーダルを非表示にします。
toggle() モーダルの表示状態を切り替えます。
dispose() モーダルインスタンスを破棄します。
handleUpdate() モーダルの位置とサイズを更新します。

静的メソッド

メソッド 説明
Modal.getInstance(element) 指定された要素に対応するモーダルインスタンスを取得します。 element はモーダルの HTML 要素です。

アクセシビリティ

アクセスしやすいモーダルを作成するには、以下の推奨事項に従ってください。

  • スクリーンリーダーの読みやすさを向上させるために、ARIA 属性を使用します。

    • たとえば、モーダルを起動するボタンに aria-haspopup="true" と aria-expanded="false" 属性を追加し、モーダルが開いたら aria-expanded 属性を true に更新します。

  • モーダルのコンテンツが理解しやすく操作しやすいことを確認します。

    • 明確なタイトルとラベルを使用し、十分なコントラストを提供します。

カスタマイズ

CSS を使用して、モーダルの外観をカスタマイズできます。

  • 背景色、境界線、影などのスタイルを変更します。

    • たとえば、.modal-content クラスのスタイルを変更して、モーダルのコンテンツ領域のスタイルをカスタマイズできます。

JavaScript を使用して、より高度なカスタム機能を実装できます。

  • たとえば、コンテンツを動的に追加または削除したり、カスタムアニメーション効果を作成したりできます。

よくある質問

Q: ユーザーが背景の遮蔽レイヤーをクリックしたときにモーダルが閉じないようにするにはどうすればよいですか?

A: モーダルを起動するボタンまたはモーダル要素に data-bs-backdrop="static" 属性を追加します。

Q: モーダルの閉じるボタンを無効にするにはどうすればよいですか?

A: 閉じるボタンから data-bs-dismiss="modal" 属性を削除します。

Q: モーダルの表示または非表示時にカスタム JavaScript コードを実行するにはどうすればよいですか?

A: show.bs.modalshown.bs.modalhide.bs.modalhidden.bs.modal イベントを使用します。