初心者でも安心!Bootstrap 3 モーダルを垂直方向に中央に配置する3つの方法

2024-05-20

Bootstrap 3 モーダルを垂直方向に中央に配置する方法

方法 1: CSS を使用する

  1. .modal-dialog クラスに以下の CSS を追加します。
.modal-dialog {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

この CSS は、.modal-dialog 要素を絶対配置し、ウィンドウの垂直方向と水平方向の中心から 50% の位置に配置します。 transform: translate(-50%, -50%) プロパティは、要素をその元の位置から 50% だけ左上に移動することで、中央配置を達成します。

方法 2: JavaScript を使用する

  1. 以下の JavaScript コードをモーダルの shown.bs.modal イベントに追加します。
$('.modal').on('shown.bs.modal', function () {
  var $modal = $(this);
  var $dialog = $modal.find('.modal-dialog');
  var modalHeight = $dialog.height();
  var windowHeight = $(window).height();
  var top = (windowHeight - modalHeight) / 2;
  $dialog.css('margin-top', top + 'px');
});

この JavaScript コードは、モーダルが表示されたときに、モーダル ダイアログの高さとウィンドウの高さを取得し、その差を 2 で割って、ダイアログを垂直方向に中央に配置するのに必要な margin-top 値を計算します。

補足

  • 上記の方法は、Bootstrap 3 のデフォルトのモーダル サイズを前提としています。モーダル サイズを変更している場合は、CSS または JavaScript コードを調整する必要がある場合があります。
  • モーダル内にコンテンツが追加されると、モーダル ダイアログの高さが変わり、垂直方向の中央配置が崩れる可能性があります。この問題を解決するには、JavaScript コードを調整して、モーダル ダイアログの高さを動的に計算する必要があります。
  • Bootstrap 4 以降では、モーダルを垂直方向に中央に配置するためのユーティリティ クラス .modal-dialog-centered が導入されています。



    Bootstrap 3 モーダルを垂直方向に中央に配置するサンプルコード

    <!DOCTYPE html>
    <html lang="ja">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Bootstrap 3 モーダル 垂直方向中央配置</title>
      <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vk50xS60itYqM+gIMYGD4lflY/7GWPE5o87J6x1r5q5+UIi55eRm4+qU7zi7i6WY" crossorigin="anonymous">
    </head>
    <body>
      <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">モーダルを開く</button>
    
      <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered">
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
              <h4 class="modal-title" id="exampleModalLabel">モーダル タイトル</h4>
            </div>
            <div class="modal-body">
              ... モーダル コンテンツ ...
            </div>
            <div class="modal-footer">
              <button type="button" class="btn btn-default" data-dismiss="modal">閉じる</button>
              <button type="button" class="btn btn-primary">保存</button>
            </div>
          </div>
        </div>
      </div>
    
      <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.slim.min.js" integrity="sha384-DfXSqoJ84D7iWDAzWj4zT/39FHQi69xAu0RJ2kWNqsQ+ElISzQSzYzP1+GYi5F" crossorigin="anonymous"></script>
      <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-9pIGZnQP6r2cVN1p/ogU8O8EY2+F41TlPejMYgDF9sCdR4fWN4zEJnJWHc7jxw3" crossorigin="anonymous"></script>
      <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-bnD7zBp9k+u1GHTzsbwTW6b/jF2EWnR4vW1rF53Y9FtFt5N27J9GGJ7yozT+I4" crossorigin="anonymous"></script>
    </body>
    </html>
    

    このコードでは、.modal-dialog クラスに modal-dialog-centered クラスを追加することで、モーダルを垂直方向に中央に配置しています。

    <!DOCTYPE html>
    <html lang="ja">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Bootstrap 3 モーダル 垂直方向中央配置</title>
      <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vk50xS60itYqM+gIMYGD4lflY/7GWPE5o87J6x1r5q5+UIi55eRm4+qU7zi7i
    



    Bootstrap 3 モーダルを垂直方向に中央に配置するその他の方法

    方法 3: グリッドシステムを利用する

    Bootstrap のグリッドシステムを使用して、モーダル ダイアログを垂直方向に中央に配置することもできます。

    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog modal-sm">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="exampleModalLabel">モーダル タイトル</h4>
          </div>
          <div class="modal-body">
            ... モーダル コンテンツ ...
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">閉じる</button>
            <button type="button" class="btn btn-primary">保存</button>
          </div>
        </div>
      </div>
    </div>
    

    このコードでは、.modal-dialog クラスに modal-sm クラスを追加してモーダル サイズを小さくし、.modal-content 要素を rowcol-md-12 クラスでラップして垂直方向に中央に配置しています。

    方法 4: Flexbox を使用する

    .modal-dialog {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
    

    この CSS は、.modal-dialog 要素をフレックス コンテナとして設定し、子要素を垂直方向に中央に配置します。

    上記の方法でうまくいかない場合は、カスタム CSS を使用してモーダルを垂直方向に中央に配置することもできます。

    .modal-dialog {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      margin: 0 auto;
      width: 600px; /* モーダル ダイアログの幅 */
    }
    

    どの方法を選択するかは、プロジェクトの要件と開発者の好みによって異なります。

    • 方法 1 は、最も簡単でシンプルな方法です。
    • 方法 2 は、より柔軟性がありますが、JavaScript コードを追加する必要があります。
    • 方法 3 は、グリッド システムを使用してモーダルをレイアウトする場合に役立ちます。
    • 方法 5 は、上記の方法でうまくいかない場合に使用できます。

    css twitter-bootstrap modal-dialog


    上級者向け!PHP、HTML、CSSで高度なレイアウトのPDFファイルを作成する

    mPDFライブラリを使うmPDFは、PHPでPDFファイルを生成するためのオープンソースライブラリです。HTMLとCSSを直接記述してPDFファイルを作成することができ、非常に多くの機能が備わっています。手順mPDFライブラリをダウンロードしてインストールします。...


    title属性、data属性、CSS疑似要素...span要素にツールチップを表示する3つの方法

    HTMLとCSSのみでspan要素にツールチップを追加するには、いくつかの方法があります。方法1:title属性を使用するこれは最も簡単な方法です。span要素のtitle属性にツールチップのテキストを指定します。data-tooltipのようなカスタムdata属性を使用して、ツールチップのテキストを指定できます。...


    HTML、CSS、ホバーイベント:要素がホバーされた時に他の要素に影響を与える方法

    このチュートリアルでは、HTML、CSS、ホバーイベントを使用して、要素がホバーされたときに他の要素に影響を与える方法について解説します。具体的には、以下の3つの方法を紹介します。CSSセレクタCSSプロパティJavaScriptCSSセレクタを使用して、ホバーされた要素とその子孫要素にスタイルを適用できます。...


    MutationObserverやResizeObserverとの比較も!jQueryでウィンドウリサイズを検知する3つの方法

    このガイドでは、jQuery を使ってブラウザウィンドウのリサイズを検知し、それに応じて処理を実行する方法を説明します。ウィンドウのリサイズイベントは、レスポンシブな Web サイトを作成したり、ユーザーの画面サイズに合わせてコンテンツを調整したりする際に役立ちます。...


    HTMLとCSSで実現するスマートな2行省略:詳細ガイドとサンプルコード

    まず、省略したい文章を内包する要素を用意します。例えば、<p>要素や<div>要素などが一般的です。次に、CSSを使って要素のスタイルを設定します。以下の3つのプロパティが重要になります。width: 要素の幅を制限します。この幅を超える部分は省略されます。...