2015-03-27 3 views
5

Я не могу найти решение этого вопроса, здесь был вопрос, но ответы не очень полезны (по крайней мере, для меня).Отключить прокрутку, но сохранить прокрутку CSS

У меня есть модальное всплывающее окно JavaScript, которое отключает все на заднем плане, размещая прозрачный div над страницей. Он также отключает прокрутку, устанавливая переполнение в скрытое и должен делать это, потому что страница прокручивается с помощью колеса мыши в противном случае и отвлекает пользователя.

Проблема заключается в том, что при скрытии и показе полосы прокрутки страница изменяется, а эффект уродливый. Кроме того, моя страница спроектирована таким образом, что если я остановлю ее от изменения размера, это тоже будет уродливо.

Я хочу отключить полосу прокрутки, но сохранить ее видимой (содержимое страницы больше, чем на экране). Это как-то возможно в CSS?

+1

пожалуйста показать код – fcalderan

+0

За что именно? Я имею в виду действительно, для какой части? Весь код довольно сложный, при этом JS динамически добавляет элементы. – justanothercoder

+0

Я понятия не имею, как эта страница работает и как вы ее создали. Как вы можете ожидать, что я понимаю, в чем проблема, и где можно исправить это в CSS? – fcalderan

ответ

8

Вместо изменения css, который удалит scrollbar, и, как вы сказали, измените расположение страницы, попробуйте вместо этого позвонить jquery function.

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

тогда, когда вы закрываете модальный, вызовите ту же функцию, но заменить on с off

+2

Да, опять же нет простого решения CSS, когда должно быть, и нет причин. Спасибо, будем использовать JS/jQuery – justanothercoder

+2

Хорошая идея, но она также блокирует любой прокрутки внутри всплывающего окна. –

+3

Кстати, пользователи все еще могут прокручивать содержимое, перетаскивая полосу прокрутки с помощью мыши после этого. –

1

Как только вы начнете показывать свое всплывающее окно, дайте body класс (например, popupOpen). Это должно быть простым решением.

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

Когда вы закроете всплывающее окно, просто удалить класс из body.

+0

Приятно знать это о полосе прокрутки, но я могу Не делай этого. Если страница будет отображаться в более высоком разрешении, полосы прокрутки не будут отображаться, поэтому она будет закручиваться. Кроме того, моя страница, ну, я воссоздаю что-то очень похожее на этот бесплатный шаблон: 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-new & galleryDocIndex = 2 & category = business-services & metaSiteId = & viewMode = рабочий стол Простое изменение размера или оставление большего поля очень заметно, мои поля меньше, чем на этом шаблоне. – justanothercoder

+1

- все ли 'прокрутки" одинаковой ширины во всех браузерах на всех устройствах? –

+9

Ширина полосы прокрутки не одинакова во всех браузерах. –

Смежные вопросы