フルスクリーンモーダルの「レスポンシブ」ソリューションを思いつきました:
特定のブレークポイントでのみ有効にできるフルスクリーン モーダル。このようにして、モーダルは、より広い (デスクトップ) 画面では「通常」を表示し、小さい (タブレットまたはモバイル) 画面ではフルスクリーンで表示し、ネイティブ アプリの感覚を与えます。
Bootstrap 3およびBootstrap 4に実装されています。デフォルトでBootstrap 5に含まれています。
ブートストラップ v5
フルスクリーン モーダルはデフォルトでBootstrap 5に含まれています: https://getbootstrap.com/docs/5.0/components/modal/#fullscreen-modal
ブートストラップ v4
次の一般的なコードが機能するはずです。
.modal {
padding: 0 !important; // override inline padding-right added from js
}
.modal .modal-dialog {
width: 100%;
max-width: none;
height: 100%;
margin: 0;
}
.modal .modal-content {
height: 100%;
border: 0;
border-radius: 0;
}
.modal .modal-body {
overflow-y: auto;
}
.modal
以下の scss コードを含めることにより、要素に追加する必要がある次のクラスが生成されます。
+---------------------+---------+---------+---------+---------+---------+
| | xs | sm | md | lg | xl |
| | <576px | ≥576px | ≥768px | ≥992px | ≥1200px |
+---------------------+---------+---------+---------+---------+---------+
|.modal-fullscreen | 100% | default | default | default | default |
+---------------------+---------+---------+---------+---------+---------+
|.modal-fullscreen-sm | 100% | 100% | default | default | default |
+---------------------+---------+---------+---------+---------+---------+
|.modal-fullscreen-md | 100% | 100% | 100% | default | default |
+---------------------+---------+---------+---------+---------+---------+
|.modal-fullscreen-lg | 100% | 100% | 100% | 100% | default |
+---------------------+---------+---------+---------+---------+---------+
|.modal-fullscreen-xl | 100% | 100% | 100% | 100% | 100% |
+---------------------+---------+---------+---------+---------+---------+
scss コードは次のとおりです。
@mixin modal-fullscreen() {
padding: 0 !important; // override inline padding-right added from js
.modal-dialog {
width: 100%;
max-width: none;
height: 100%;
margin: 0;
}
.modal-content {
height: 100%;
border: 0;
border-radius: 0;
}
.modal-body {
overflow-y: auto;
}
}
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-down($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
.modal-fullscreen#{$infix} {
@include modal-fullscreen();
}
}
}
Codepen のデモ: https://codepen.io/andreivictor/full/MWYNPBV/
ブートストラップ v3
このトピックに対する以前の回答 (@Chris J、@kkarli) に基づいて、次の一般的なコードが機能するはずです。
.modal {
padding: 0 !important; // override inline padding-right added from js
}
.modal .modal-dialog {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.modal .modal-content {
height: auto;
min-height: 100%;
border: 0 none;
border-radius: 0;
box-shadow: none;
}
.modal
レスポンシブ フルスクリーン モーダルを使用する場合は、要素に追加する必要がある次のクラスを使用します。
.modal-fullscreen-md-down
- モーダルは より小さい画面ではフルスクリーンです1200px
。
.modal-fullscreen-sm-down
- モーダルは より小さい画面ではフルスクリーンです922px
。
.modal-fullscreen-xs-down
- モーダルは より小さい画面のフルスクリーンです768px
。
次のコードを見てください。
/* Extra small devices (less than 768px) */
@media (max-width: 767px) {
.modal-fullscreen-xs-down {
padding: 0 !important;
}
.modal-fullscreen-xs-down .modal-dialog {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.modal-fullscreen-xs-down .modal-content {
height: auto;
min-height: 100%;
border: 0 none;
border-radius: 0;
box-shadow: none;
}
}
/* Small devices (less than 992px) */
@media (max-width: 991px) {
.modal-fullscreen-sm-down {
padding: 0 !important;
}
.modal-fullscreen-sm-down .modal-dialog {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.modal-fullscreen-sm-down .modal-content {
height: auto;
min-height: 100%;
border: 0 none;
border-radius: 0;
box-shadow: none;
}
}
/* Medium devices (less than 1200px) */
@media (max-width: 1199px) {
.modal-fullscreen-md-down {
padding: 0 !important;
}
.modal-fullscreen-md-down .modal-dialog {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.modal-fullscreen-md-down .modal-content {
height: auto;
min-height: 100%;
border: 0 none;
border-radius: 0;
box-shadow: none;
}
}
デモは Codepen で入手できます: https://codepen.io/andreivictor/full/KXNdoO。
Sass をプリプロセッサとして使用する場合は、次の mixin を利用できます。
@mixin modal-fullscreen() {
padding: 0 !important; // override inline padding-right added from js
.modal-dialog {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.modal-content {
height: auto;
min-height: 100%;
border: 0 none;
border-radius: 0;
box-shadow: none;
}
}