Ich habe einen modalen Dialog in meiner App, der in y-Richtung ziemlich lang werden kann. Dies führt zu einem Problem, bei dem ein Teil des Dialoginhalts am unteren Rand der Seite ausgeblendet wird.
Ich möchte, dass die Bildlaufleiste des Fensters den Dialog scrollt, wenn er angezeigt wird und zu lang ist, um auf den Bildschirm zu passen, aber den Hauptteil hinter dem Modal belassen soll. Wenn Sie Trello verwenden , wissen Sie, was ich vorhabe.
Ist dies möglich, ohne JavaScript zur Steuerung der Bildlaufleiste zu verwenden?
Hier ist das CSS, das ich bisher auf mein Modal und meinen Dialog angewendet habe:
body.blocked {
overflow: hidden;
}
.modal-screen {
background: #717174;
position: fixed;
overflow: hidden;
width: 100%;
height: 100%;
top: 0;
left: 0;
opacity: 0.9;
z-index: 50;
}
.dialog {
background: #fff;
position: fixed;
padding: 12px;
top: 20%;
left: 50%;
z-index: 10000;
border-radius: 5px;
box-shadow: 0, 0, 8px, #111;
}
Antworten:
benutz einfach
Es ordnet Ihr Modal an und gibt ihm dann eine vertikale Schriftrolle
quelle
Das hat es für mich behoben:
BEARBEITEN : Ich verwende jetzt dieselbe Methode, die derzeit auf Twitter verwendet wird, wobei sich das Modal wie eine separate Seite über dem aktuellen Inhalt verhält und sich der Inhalt hinter dem Modal beim Scrollen nicht bewegt.
Im Wesentlichen ist es das:
Mit diesem CSS auf dem Modal:
JSFiddle: https://jsfiddle.net/0x0049/koodkcng/
Reine JS-Version (IE9 +): https://jsfiddle.net/0x0049/koodkcng/1/
Dies funktioniert unabhängig von der Höhe oder Breite der Seite oder des modalen Dialogfelds, ermöglicht das Scrollen, unabhängig davon, wo sich Ihre Maus / Ihr Finger befindet, hat keinen Jarring-Jump. Einige Lösungen haben das Scrollen im Hauptinhalt deaktiviert und sehen auch gut aus.
quelle
Veränderung
position
zu
quelle
position: fixed;
Könnte es in absolut oder sonst sein?Hier ist meine Demo des modalen Fensters, dessen Größe automatisch an den Inhalt angepasst wird und die mit dem Scrollen beginnt, wenn es nicht zum Fenster passt.
Modale Fensterdemo (siehe Kommentare im HTML-Quellcode)
Alles nur mit HTML und CSS - kein JS erforderlich, um das modale Fenster anzuzeigen und seine Größe zu ändern
(aber Sie benötigen es natürlich immer noch, um das Fenster anzuzeigen- in der neuen Version benötigen Sie JS überhaupt nicht).Update (weitere Demos):
Modales Fenster nach oben ausgerichtet
Zentriertes Modalfenster
Alte Demo, die Javascript verwendet
Der Punkt ist, äußere und innere DIVs zu haben, wobei die äußere die feste Position definiert und die innere das Scrollen erzeugt. (In der Demo gibt es tatsächlich mehr DIVs, damit sie wie ein tatsächliches modales Fenster aussehen.)
quelle
overflow:hidden
und ihre Größe auf die gleiche Größe wie die Seite und dasmargin-top
Negative auf die Seite einstellenscroll-top
.html,body{ overflow:hidden }
?html,body{ overflow:hidden }
funktioniert dies jedoch möglicherweise nicht wie erwartet. Es mag also wie ein Overkill aussehen, ist aber besser sicher als leid .Eine feste Positionierung allein hätte dieses Problem beheben sollen. Eine weitere gute Lösung, um dieses Problem zu vermeiden, besteht darin, Ihre modalen Divs oder Elemente am unteren Rand der Seite zu platzieren, nicht innerhalb des Layouts Ihrer Site. Die meisten modalen Plugins geben ihre modale Positionierung absolut an, damit der Benutzer weiter auf der Hauptseite scrollen kann.
quelle
Hier .. Funktioniert perfekt für mich
quelle
Auf einfache Weise können Sie dies tun, indem Sie dieses CSS hinzufügen. Sie haben dies also gerade zu CSS hinzugefügt:
und es funktioniert!
quelle
position:fixed
impliziert, dass das modale Fenster relativ zum Ansichtspunkt fixiert bleibt. Ich stimme Ihrer Einschätzung zu, dass dies in diesem Szenario angemessen ist. Warum fügen Sie dem modalen Fenster selbst keine Bildlaufleiste hinzu?Wenn ja, sollten korrekte
max-height
undoverflow
Eigenschaften den Trick machen.quelle
Am Ende musste ich Änderungen am Inhalt der Seite hinter dem modalen Bildschirm vornehmen, um sicherzustellen, dass es nie lang genug wurde, um die Seite zu scrollen.
Sobald ich das getan habe, wurden die Probleme, die beim Anwenden
position: absolute
auf den Dialog aufgetreten sind, behoben, da der Benutzer nicht mehr nach unten scrollen konnte.quelle
Fensterseite Bildlaufleiste anklickbar, wenn Modal geöffnet ist
Dieser arbeitet für mich. Reines CSS.
Probieren Sie es aus und lassen Sie es mich wissen
quelle
Ich wollte meine reine CSS-Antwort auf dieses Problem der Modalitäten mit dynamischer Breite und Höhe hinzufügen. Der folgende Code funktioniert auch mit den folgenden Anforderungen:
HTML:
CSS / WENIGER:
Auf diese Weise befindet sich das Modal immer im Ansichtsfenster. Die Breite und Höhe des Modals sind so flexibel, wie Sie möchten. Der Einfachheit halber habe ich mein Symbol zum Schließen entfernt.
quelle