jQuery / CSS: Fixes Overlay sollte das Scrollen des Hintergrunds nicht erlauben?

8

Ich habe eine Overlay-Box, die fest und zentriert auf dem Bildschirm ist. Die Seite selbst ist ziemlich lang und hat eine vertikale Bildlaufleiste.

Ich möchte das Scrollen der Seite selbst deaktivieren, sobald das Overlay angezeigt wird. Ich kann Scroll jedoch nicht vollständig deaktivieren, da einige Overlays overflow-y:scroll für sich selbst haben. Also sollte der Inhalt in der Überlagerung gescrollt werden, aber die Seite selbst sollte stecken bleiben.

Irgendeine Idee, wie man das mit jquery oder css löst?

    
matt 25.07.2011, 12:09
quelle

5 Antworten

7

Am schnellsten und schmutzigsten kann ich einen Ereignis-Listener an das Fenster für Scroll-Ereignisse anhängen und preventDefault (), wenn Ihr Overlay sichtbar ist.

so (mit jquery).

%Vor%

Hoffe, das ist was du suchst.

    
AshHeskes 25.07.2011, 12:30
quelle
3

Sie können body auf overflow: hidden setzen. Dies verhindert das Scrollen. Die Überlaufdeklarationen von Child bleiben davon unberührt. Ich habe eine kleine Geige gemacht.

    
marc 25.07.2011 12:20
quelle
1

Nur eine Anpassung an Marcs jQuery-Lösung. Mein Code deaktiviert den Body-Bildlauf, wenn die Überlagerung angezeigt wird. Wenn Sie dann auf die Schaltfläche zum Schließen von Body oder Overlay klicken, wird der Body-Bildlauf wieder aktiviert.

%Vor%

Hier ist ein kleines JSFiddle meines Skripts in Aktion.

    
Studocwho 18.09.2013 09:31
quelle
0

Sie können Ihr Overlay als {position: fixed;} positionieren. Das wird Ihr Overlay auf Ihrem Bildschirm behalten , auch wenn Ihre Seite scrollt.

    
jrharshath 25.07.2011 12:13
quelle
0

Sie können einen Container mit voller Breite und voller Höhe mit position: fixed erstellen. Und innerhalb dieses Containers erstellen Sie Ihr aktuelles Overlay mit Informationen. Der Container blendet den Benutzer im Grunde davor aus, mit der Seite zu scrollen oder zu interagieren.

    
jeroen 26.07.2013 18:33
quelle

Tags und Links