Saya datang dengan solusi "responsif" untuk modals layar penuh:
Mode Layar Penuh yang hanya bisa diaktifkan pada breakpoint tertentu . Dengan cara ini modal akan menampilkan "normal" pada layar yang lebih luas (desktop) dan layar penuh pada layar yang lebih kecil (tablet atau seluler) , memberikannya perasaan seperti aplikasi asli.
Diimplementasikan untuk Bootstrap 3 dan Bootstrap 4 .
Bootstrap v4
Kode generik berikut harus berfungsi:
.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;
}
Dengan memasukkan kode scss di bawah ini, ia menghasilkan kelas-kelas berikut yang perlu ditambahkan ke .modal
elemen:
+---------------+---------+---------+---------+---------+---------+
| | xs | sm | md | lg | xl |
| | <576px | ≥576px | ≥768px | ≥992px | ≥1200px |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen | 100% | default | default | default | default |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-sm | 100% | 100% | default | default | default |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-md | 100% | 100% | 100% | default | default |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-lg | 100% | 100% | 100% | 100% | default |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-xl | 100% | 100% | 100% | 100% | 100% |
+---------------+---------+---------+---------+---------+---------+
Kode scss adalah:
@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();
}
}
}
Demo di Codepen: https://codepen.io/andreivictor/full/MWYNPBV/
Bootstrap v3
Berdasarkan respons sebelumnya terhadap topik ini (@Chris J, @kkarli), kode generik berikut ini akan berfungsi:
.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;
}
Jika Anda ingin menggunakan modals layar penuh yang responsif, gunakan kelas-kelas berikut yang perlu ditambahkan ke .modal
elemen:
.modal-fullscreen-md-down
- modalnya adalah layar penuh untuk layar yang lebih kecil dari 1200px
.
.modal-fullscreen-sm-down
- modalnya adalah layar penuh untuk layar yang lebih kecil dari 922px
.
.modal-fullscreen-xs-down
- modalnya adalah layar penuh untuk layar yang lebih kecil dari 768px
.
Lihatlah kode berikut:
/* 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;
}
}
Demo tersedia di Codepen: https://codepen.io/andreivictor/full/KXNdoO .
Mereka yang menggunakan Sass sebagai preprosesor dapat memanfaatkan mixin berikut:
@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;
}
}
margin: 0
untuk.modal-dialog
.