Bootstrapのモーダルを中央に配置する方法
この記事では、Bootstrapフレームワークを使用して、モーダル(ポップアップ)を垂直方向に中央揃えして表示する方法について説明します。コンテンツが画面の高さを超える場合でも、完全に表示されるようにする方法を紹介します。
Bootstrapモーダルのデフォルトの表示の問題点
- デフォルトでは、Bootstrapモーダルはページの上部に表示されます。これは、場合によっては最適な表示方法とは言えません。
- モーダルのコンテンツが長すぎて画面の高さを超える場合、ユーザーはコンテンツ全体を表示するためにページ全体をスクロールする必要があり、ユーザーフレンドリーではありません。
modal-dialog-centeredクラスを使用して垂直方向に中央揃えする
Bootstrapは、この問題を解決するために便利なCSSクラスmodal-dialog-centered
を提供しています。modal-dialog
要素にこのクラスを追加するだけで、モーダルを垂直方向に中央揃えして表示できます。
コード例
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="myModalLabel">モーダルのタイトル</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="閉じる">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
... モーダルのコンテンツ ...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">閉じる</button>
<button type="button" class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
メリットと注意点
メリット | 注意点 |
---|---|
CSSクラスを追加するだけで簡単に実装できる。 | Bootstrap 4 以降で利用可能。 |
モーダルのコンテンツが画面の高さを超えても、垂直方向に中央揃えして表示されるため、ユーザーエクスペリエンスが向上する。 | モーダルの高さを明示的に指定している場合は、期待通りに動作しない可能性がある。 |
よくある質問
Q1: modal-dialog-centered
クラスを追加してもモーダルが中央に表示されません。
A1: Bootstrap 4 以降のバージョンを使用していることを確認してください。また、モーダルの高さを明示的に指定している場合は、modal-dialog-centered
クラスが正しく機能しない可能性があります。その場合は、モーダルの高さを調整するか、JavaScriptを使用して動的に中央揃えする必要があります。
Q2: モーダルを水平方向にも中央揃えしたい場合はどうすればよいですか?
A2: BootstrapのグリッドシステムまたはFlexboxを使用して、モーダルを水平方向にも中央揃えすることができます。modal-dialog
クラスに適切なクラスを追加することで実現できます。
Q3: JavaScriptを使用してモーダルを中央揃えすることはできますか?
A3: はい、JavaScriptを使用してモーダルを動的に中央揃えすることもできます。モーダルの表示後、JavaScriptでモーダルの位置を計算し、CSSで位置を調整することで実現できます。
その他の参考記事: