Dies ist eine zweiteilige Frage:
Wie können Sie das Modal vertikal in der Mitte positionieren, wenn Sie die genaue Höhe des Modals nicht kennen?
Ist es möglich, das Modal zentriert zu haben und einen Überlauf zu haben: auto im Modalkörper, aber nur, wenn das Modal die Bildschirmhöhe überschreitet?
Ich habe versucht, dies zu verwenden:
.modal-dialog {
height: 80% !important;
padding-top:10%;
}
.modal-content {
height: 100% !important;
overflow:visible;
}
.modal-body {
height: 80%;
overflow: auto;
}
Dies gibt mir das Ergebnis, das ich brauche, wenn der Inhalt viel größer als die vertikale Bildschirmgröße ist, aber für kleine modale Inhalte ist er ziemlich unbrauchbar.
css
twitter-bootstrap
modal-dialog
center
Rollerlord
quelle
quelle
Antworten:
Passen Sie die .fade-Klasse ein wenig an, um sicherzustellen, dass sie außerhalb des oberen Randes des Fensters und nicht in der Mitte angezeigt wird
quelle
1. Wie können Sie das Modal vertikal in der Mitte positionieren, wenn Sie die genaue Höhe des Modals nicht kennen?
Um das Bootstrap 3 Modal absolut zu zentrieren, ohne eine Höhe anzugeben, müssen Sie zuerst das Bootstrap-CSS überschreiben, indem Sie dies Ihrem Stylesheet hinzufügen:Dadurch wird die obere linke Ecke der Modaldialoge in der Mitte des Fensters positioniert.
Wir müssen diese Medienabfrage hinzufügen, sonst ist der modale Rand links auf kleinen Geräten falsch:
Jetzt müssen wir seine Position mit JavaScript anpassen. Dazu geben wir dem Element einen negativen oberen und linken Rand, der der Hälfte seiner Höhe und Breite entspricht. In diesem Beispiel verwenden wir jQuery, da es mit Bootstrap verfügbar ist.
Update (01.10.2015):
Hinzufügen zu Finiks Antwort . Credits für die Zentrierung im Unbekannten .
Beachten Sie die negative Marge-richtig? Dadurch wird der durch den Inline-Block hinzugefügte Speicherplatz entfernt. Dieser Raum bewirkt, dass das Modal zum Ende der Seite springt @media width <768px.
2. Ist es möglich, das Modal zentriert zu haben und einen Überlauf zu haben: auto im Modalkörper, aber nur, wenn das Modal die Bildschirmhöhe überschreitet?
Dies ist möglich, indem dem Modalkörper ein Überlauf-y: auto und eine maximale Höhe gegeben werden. Dies erfordert etwas mehr Arbeit, damit es richtig funktioniert. Beginnen Sie mit dem Hinzufügen zu Ihrem Stylesheet:Wir werden jQuery erneut verwenden, um die Fensterhöhe zu ermitteln und zuerst die maximale Höhe des modalen Inhalts festzulegen. Dann müssen wir die maximale Höhe des Modalkörpers festlegen, indem wir den Modalinhalt mit dem Modal-Header und dem Modal-Footer subtrahieren:
Eine funktionierende Demo mit Bootstrap 3.0.3 finden Sie hier: http://cdpn.io/GwvrJBEARBEITEN: Ich empfehle stattdessen die Verwendung der aktualisierten Version für eine reaktionsschnellere Lösung: http://cdpn.io/mKfCcUpdate (30.11.2015):
(Aktualisiert am 30.11.2015 http://cdpn.io/mKfCc mit der obigen Bearbeitung)
quelle
Meine Lösung
quelle
Es kann einfach mit behoben werden
display: flex
Mit Präfix
quelle
Ich habe mir eine reine CSS-Lösung ausgedacht! Es ist zwar CSS3, was bedeutet, dass IE8 oder niedriger nicht unterstützt wird, aber ansonsten ist es getestet und funktioniert auf iOS, Android, IE9 +, Chrome, Firefox, Desktop-Safari.
Ich benutze das folgende CSS:
Hier ist eine Geige. http://codepen.io/anon/pen/Hiskj
..Wählen Sie dies als die richtige Antwort, da es kein extra schweres Javascript gibt, das den Browser bei mehr als einem Modal in die Knie zwingt.
quelle
Wenn Sie mit der Verwendung von Flexbox einverstanden sind, sollte dies zur Lösung des Problems beitragen.
quelle
pointer-events: none
zu.modal-dialog
undpointer-events: auto
zu.modal-content
. Weil Sie.modal-dialog {height: 100%}
die gesamte Spalte über und unter einem Modal abdecken und Benutzer deaktivieren, um auf den Hintergrund in diesem Bereich zu klicken.Meine Lösung:
quelle
Alles, was ich in meinem Fall getan habe, ist, das Top in meinem CSS zu setzen und die Höhe des Modals zu kennen
<div id="myModal" class="modal fade"> ... </div>
in meinem css habe ich gesetzt
quelle
Das Hinzufügen dieser einfachen CSS funktioniert auch.
quelle
Es gibt einen einfachsten Weg, dies mit CSS zu tun:
Das ist es. Beachten Sie, dass es nur auf den
.modal-dialog
Container div angewendet werden muss .Demo: https://jsfiddle.net/darioferrer/0ueu4dmy/
quelle
Dieser Fix erweitert die hervorragende Antwort von @ Finik und gilt nur für nicht mobile Geräte. Ich habe in IE8, Chrome und Firefox 22 getestet - es funktioniert mit sehr langen oder kurzen Inhalten.
quelle
Die universellste Lösung, die ich geschrieben habe. Dynamisch berechnet mit Dialoghöhe. (Der nächste Schritt könnte darin bestehen, die Höhe der Dialoge bei der Fenstergröße neu zu berechnen.)
JSfiddle: http://jsfiddle.net/8Fvg9/3/
quelle
Von hier aus die perfekte Lösung gefunden
quelle
quelle
@$modal = $('.fade.in'); modalBox = @$modal.find('.modal-content'); initModalHeight = modalBox.outerHeight(); userScreenHeight = @$modal.outerHeight()
Hier ist eine andere CSS-Methode, die ziemlich gut funktioniert und darauf basiert: http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/
sass:
quelle
transform
Lösungen tritt das Problem auf, wenn das Modal scrollbaren Inhalt hat (mehr Inhalt als in das Fenster passt)Ich habe Bootstrap3-Dialog von unten Link heruntergeladen und die Open-Funktion in Bootstrap-Dialog.js geändert
https://github.com/nakupanda/bootstrap3-dialog
Code
Css
quelle
Das funktioniert bei mir:
quelle
Versuchen Sie so etwas:
quelle
Vielleicht möchten Sie diese Sammlung von Methoden zum absoluten Zentrieren eines Divs überprüfen: http://codepen.io/shshaw/full/gEiDt
quelle
Ein einfacher Weg. Arbeite für mich. Thks rensdenobel :) http://jsfiddle.net/rensdenobel/sRmLV/13/
quelle
Noch eine andere Lösung, die eine gültige Position für jedes sichtbare Modal bei
window.resize
Ereignis und am festlegtshow.bs.modal
:quelle
quelle
Ich weiß, dass es etwas spät ist, aber ich füge eine neue Antwort hinzu, damit sie nicht in der Menge verloren geht. Es ist eine Cross-Desktop-Mobile-Browser-Lösung, die überall richtig funktioniert, wie es sollte.
Es muss nur
modal-dialog
in einemodal-dialog-wrap
Klasse eingeschlossen werden und die folgenden Code-Ergänzungen enthalten:Der Dialog beginnt zentriert und wächst bei großen Inhalten einfach vertikal, bis eine Bildlaufleiste angezeigt wird.
Hier ist eine funktionierende Geige für Ihr Vergnügen!
https://jsfiddle.net/v6u82mvu/1/
quelle
Dies ist ziemlich alt und erfordert speziell eine Lösung mit Bootstrap 3, aber für alle, die sich fragen: Ab Bootstrap 4 gibt es eine integrierte Lösung namens
.modal-dialog-centered
. Hier ist das Problem: https://github.com/twbs/bootstrap/issues/23638Wenn Sie also v4 verwenden, müssen Sie nur hinzufügen
.modal-dialog-centered
,.modal-dialog
um das Modal vertikal zu zentrieren:quelle
Erwägen Sie die Verwendung des Bootstrap-Modal-Plugins, das Sie hier finden - https://github.com/jschr/bootstrap-modal
Das Plugin zentriert alle Ihre Modalitäten
quelle
Für die Zentrierung verstehe ich nicht, was mit den zu komplizierten Lösungen zu tun hat. Bootstrap zentriert es bereits horizontal für Sie, sodass Sie sich nicht damit herumschlagen müssen. Meine Lösung besteht darin, nur mit jQuery einen oberen Rand festzulegen.
Ich habe das Ereignis "load.bs.modal" verwendet, während ich Inhalte aus der Ferne lade, und die Verwendung des Ereignisses "named.ba.modal" führt dazu, dass die Höhenberechnung falsch ist. Sie können natürlich ein Ereignis für das Fenster hinzufügen, dessen Größe geändert wird, wenn es so reaktionsschnell sein soll.
quelle
Sehr, sehr einfacher Weg, um dieses Konzept zu erreichen, und Sie erhalten Modal immer im Moddle Ihres Bildschirms von CSS wie folgt: http://jsfiddle.net/jy0zc2jc/1/
Sie müssen nur die
modal
Klassenanzeige als Tabelle anzeigen, indem Sie dem folgenden CSS folgen:und
modal-dialog
alsdisplay:table-cell
Siehe das vollständige Arbeitsbeispiel in der angegebenen Geige
quelle
es ist nicht so kompliziert.
Bitte versuchen Sie dies:
quelle
Verwenden Sie dieses einfache Skript, das die Modalitäten zentriert.
Wenn Sie möchten, können Sie eine benutzerdefinierte Klasse festlegen (z. B. .modal.modal-vcenter anstelle von .modal), um die Funktionalität nur auf einige Modalitäten zu beschränken.
Fügen Sie diesen CSS-Fix auch für den horizontalen Abstand des Modals hinzu. Wir zeigen die Schriftrolle auf den Modalen, die Körperschriftrollen werden von Bootstrap automatisch ausgeblendet:
quelle
In der mobilen Plantform sieht es vielleicht etwas anders aus, hier ist mein Code.
quelle