2015-03-27 44 views
5

Nie mogę znaleźć rozwiązania, było tu pytanie, ale odpowiedzi nie są zbyt użyteczne (przynajmniej dla mnie).Wyłączyć przewijanie, ale zachować pasek przewijania CSS

Mam wyskakujące okno modalne JavaScript, które wyłącza wszystko w tle, umieszczając przezroczysty element div na stronie. Wyłącza także przewijanie, ustawiając przelew na ukryty i musi to zrobić, ponieważ strona jest przewijana kółkiem myszy w inny sposób i rozprasza użytkownika.

Problem polega na tym, że podczas ukrywania i pokazywania paska przewijania zmienia się rozmiar strony, a efekt jest brzydki. Ponadto moja strona jest zaprojektowana w taki sposób, że jeśli ją powstrzymam przed zmianą rozmiaru, byłoby to brzydkie.

Chcę tylko wyłączyć pasek przewijania, ale pozostawić go widocznym (zawartość strony jest dłuższa niż pasuje ekran). Czy jest to jakoś możliwe w CSS?

+1

proszę pokazać jakiś kod – fcalderan

+0

za to, co dokładnie? Mam na myśli naprawdę, dla której części? Cały kod jest dość skomplikowany, a JS dynamicznie dodaje elementy. – justanothercoder

+0

Nie mam pojęcia, jak działa ta strona i jak ją stworzyłeś. Jak możesz się spodziewać, że rozumiem, gdzie i gdzie jest problem i czy można go naprawić w CSS? – fcalderan

Odpowiedz

8

Zamiast zmieniać css, który usunie scrollbar, i jak powiedział pan zmienić układ strony, spróbuj wywołaniem jquery function zamiast.

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

następnie po zamknięciu modal, nazywają tę samą funkcję, ale zastąpić on z off

+2

Tak, znowu nie ma prostego rozwiązania CSS, kiedy powinno być, i nie ma powodu, dla którego. Dziękuję, użyje JS/jQuery – justanothercoder

+2

Dobry pomysł, ale blokuje też dowolny zwoju wewnątrz wyskakującego okienka. –

+3

Przy okazji użytkownicy nadal mogą przewijać zawartość, przeciągając pasek przewijania myszką. –

1

Gdy zaczniesz wyświetlać wyskakujące okienko, podaj body klasę (np. popupOpen). To powinno być łatwe do obejścia.

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

Po zamknięciu okienko, po prostu usunąć klasę z body.

+0

Miło wiedzieć o pasku przewijania, ale mogę nie rób tego. Jeśli strona jest oglądana w wyższej rozdzielczości, nie będzie paska przewijania, więc to ją zepsuje. Poza tym, na mojej stronie, odtwarzam coś bardzo podobnego do tego bezpłatnego szablonu: http://www.wix.com/website-template/view/html/1410?originUrl=http%3A%2F%2Fwww.wix.com % 2Fastryna% 2Ftemplates% 2Fhtml% 2Fbiznes-usługi% 2F6 & bookName = create-master-new & galleryDocIndex = 2 & category = business-services & metaSiteId = & viewMode = desktop Po prostu zmienia się rozmiar lub pozostawia więcej marginesu, moje marginesy są mniejsze niż na tym szablonie. – justanothercoder

+1

to "paski przewijania" o tej samej szerokości we wszystkich przeglądarkach na wszystkich urządzeniach? –

+9

Szerokość paska przewijania nie jest taka sama we wszystkich przeglądarkach. –

Powiązane problemy