2015-03-27 9 views
5

Ich kann keine Lösung finden, hier gab es eine Frage, aber die Antworten sind nicht sehr brauchbar (zumindest für mich).Scrolling deaktivieren, aber Bildlaufleiste behalten CSS

Ich habe ein modales JavaScript-Pop-up, das alles im Hintergrund deaktiviert, indem es transparent div über die Seite platziert. Es deaktiviert auch das Scrollen, indem der Überlauf auf "Versteckt" gesetzt wird, und muss dies tun, da die Seite ansonsten mit dem Mausrad gescrollt werden kann und den Benutzer ablenkt.

Das Problem ist, wenn die Bildlaufleiste ausgeblendet und angezeigt wird die Größe der Seite geändert und der Effekt ist hässlich. Außerdem ist meine Seite so gestaltet, dass es auch hässlich wäre, wenn ich die Größenänderung abbringe.

Ich möchte die Bildlaufleiste deaktivieren, aber es sichtbar (der Seiteninhalt ist länger als der Bildschirm passt). Ist das irgendwie in CSS möglich?

+1

bitte einige Code – fcalderan

+0

Für was genau zeigen? Ich meine wirklich, für welchen Teil? Der gesamte Code ist ziemlich kompliziert, da JS Elemente dynamisch hinzufügt. – justanothercoder

+0

Ich habe keine Ahnung wie diese Seite funktioniert und wie du sie gemacht hast. Wie können Sie erwarten, dass ich weiß, wo oder wo das Problem liegt und ob es möglich ist, es in CSS zu beheben? – fcalderan

Antwort

8

Anstatt die css zu ändern, die die scrollbar entfernt, und wie Sie das Layout der Seite ändern, versuchen Sie stattdessen eine jquery function aufrufen.

// call your pop up and inside that function add below 
$('body').on('scroll mousewheel touchmove', function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
     return false; 
}); 

dann, wenn Sie die modale schließen, rufen die gleiche Funktion aber ersetzen on mit off

+2

Ja, wieder keine einfache CSS-Lösung, wenn es sein sollte, und es gibt keinen Grund, warum. Danke, benutze JS/jQuery – justanothercoder

+2

Gute Idee, aber es blockiert auch jede Schriftrolle innerhalb des Popup. –

+3

Btw, Benutzer können weiterhin den Inhalt scrollen, indem Sie die Bildlaufleiste mit der Maus danach ziehen. –

1

Sobald Sie anfangen, Ihr Popup anzuzeigen, geben Sie body eine Klasse (wie popupOpen). Dies sollte eine einfache Problemumgehung sein.

.popupOpen { 
    overflow: hidden; 
    margin-right: 17px //size of the scrollbar in each browser 
} 

Wenn Sie Ihre Pop-up schließen, entfernen Sie einfach die Klasse aus dem body.

+0

Schön, dass über die Bildlaufleiste zu wissen, aber ich kann Tu das nicht. Wenn die Seite in einer höheren Auflösung angezeigt wird, gibt es keine Bildlaufleiste, daher wird sie geschraubt. Auch meine Seite, nun, ich erstelle etwas sehr ähnliches wie diese kostenlose Vorlage: http://www.wix.com/website-template/view/html/1410?originUrl=http%3A%2F%2Fwww.wix.com % 2Fwebsite% 2Ftemplates% 2Fhtml% 2FBusiness-services% 2F6 & bookName = create-master-neu & galleryDocIndex = 2 & category = business-services & metaSiteId = & viewMode = desktop Einfaches Ändern der Größe oder das Belassen von mehr Marge ist deutlich geringer, als bei dieser Vorlage. – justanothercoder

+1

sind alle Bildlaufleisten in allen Browsern auf allen Geräten gleich breit? –

+9

Die Breite der Bildlaufleiste ist nicht in allen Browsern gleich. –

Verwandte Themen