Wenn ich mich richtig erinnere, funktionierte das Einstellen des Überlaufs: Versteckt auf dem Körper nicht in allen Browsern, die ich für eine modale Bibliothek getestet habe, die ich für eine mobile Site erstellt habe. Insbesondere hatte ich Probleme, das Scrollen des Körpers zusätzlich zum modalen Scrollen zu verhindern, selbst wenn ich einen Überlauf: versteckt auf dem Körper platzierte.
Für meine aktuelle Site habe ich so etwas gemacht. Grundsätzlich wird nur Ihre aktuelle Bildlaufposition gespeichert und "Überlauf" im Seitenkörper auf "ausgeblendet" gesetzt. Anschließend wird die Bildlaufposition nach dem Schließen des Modals wiederhergestellt. Es gibt eine Bedingung, wenn ein anderes Bootstrap-Modal geöffnet wird, während eines bereits aktiv ist. Andernfalls sollte der Rest des Codes selbsterklärend sein. Beachten Sie, dass, wenn der auf dem Körper verborgene Überlauf das Fenster nicht daran hindert, für einen bestimmten Browser zu scrollen, dies zumindest die ursprüngliche Bildlaufposition beim Beenden zurücksetzt.
function bindBootstrapModalEvents() {
var $body = $('body'),
curPos = 0,
isOpened = false,
isOpenedTwice = false;
$body.off('shown.bs.modal hidden.bs.modal', '.modal');
$body.on('shown.bs.modal', '.modal', function () {
if (isOpened) {
isOpenedTwice = true;
} else {
isOpened = true;
curPos = $(window).scrollTop();
$body.css('overflow', 'hidden');
}
});
$body.on('hidden.bs.modal', '.modal', function () {
if (!isOpenedTwice) {
$(window).scrollTop(curPos);
$body.css('overflow', 'visible');
isOpened = false;
}
isOpenedTwice = false;
});
}
Wenn Ihnen dies nicht gefällt, besteht die andere Option darin, .modal-body eine maximale Höhe und einen Überlauf zuzuweisen: auto wie folgt:
.modal-body {
max-height:300px;
overflow:auto;
}
In diesem Fall können Sie die maximale Höhe für verschiedene Bildschirmgrößen konfigurieren und den Überlauf belassen: auto für verschiedene Bildschirmgrößen. Sie müssten jedoch sicherstellen, dass die modale Kopf- und Fußzeile sowie der Textkörper nicht mehr als die Bildschirmgröße ergeben, sodass ich diesen Teil in Ihre Berechnungen einbeziehen würde.
body {overflow-y:scroll}
und durch zu ersetzenhtml {overflow: scroll;}
. Dies hat das Problem für uns behoben.