2014-01-06 3 views
0

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

P.S .: Я знаю, это не может считаться «реальным» вопросом, но я совершенно не знаю, как это решить в других терминах. Я извиняюсь!

+1

Это называется 'модальное окно/dialog' – kei

ответ

0

Вы можете предотвратить прокрутку колеса мыши через wheel события:

window.onwheel = function(evt) { evt.preventDefault(); }; 

(Заметьте, что wheel доступен на элементах, а также window объекта, и это могло бы быть лучше, чтобы прикрепить слушатель события к body, например.)

Чтобы скрыть полосы прокрутки, вы можете установить стиль соответствующего элемента на overflow:hidden.

Чтобы предотвратить прокрутку сенсорного экрана, вы можете попробовать позвонить preventDefault() на событиях touch*.

0

Чтобы предотвратить прокрутку, установите overflow: hidden в CSS. Чтобы включить прокрутку, установите overflow: auto. Поэтому, когда появляется всплывающее окно, установите:

body 
{ 
    overflow: hidden; 
} 
#myPopup 
{ 
    overflow: auto; 
} 

Демо: jsfiddle.net/yM7zb

+0

Оба ответа были очень полезны, я только принял ответ Джереми из-за того, что у него гораздо меньше очков репутации, чем у вас. Надеюсь, с тобой все в порядке. Благодаря! –

+0

Без обид. :) Однако помните, что ответ Джереми охватывает только один способ прокрутки - колесо прокрутки. Вы также можете прокручивать клавиши со стрелками, пробел, перетаскивание полосы прокрутки, щелчку стрелок на полосе прокрутки и т. Д. Лучшим подходом было бы обработать событие 'scroll' документа и вызвать' event.preventDefault() '. – gilly3

+0

@ gilly3 на самом деле я посмотрел на обработку 'scroll' и обнаружил, что' preventDefault() 'не имел никакого эффекта, по крайней мере, в Firefox. Из вашей демонстрации, хотя она выглядит как «переполнение: скрытая», а полностраничный оверлей обеспечивает точно поведение @ account50. – Jeremy

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