Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как запретить "прокручивание" содержимого страницы под модальным окном? (https://javascript.ru/forum/dom-window/35330-kak-zapretit-prokruchivanie-soderzhimogo-stranicy-pod-modalnym-oknom.html)

rebroff 07.02.2013 19:09

Как запретить "прокручивание" содержимого страницы под модальным окном?
 
Здравствуйте.

Собственно, есть модальное окно. Необходимо сделать его действительно модальным, т.е. запретить прокручивание подлежащего содержимого основного окна.

Устанавливала-снимала overflow: hidden для body. Функционально - то, что нужно, но при этом имеем неприятный побочный эффект в виде дерганья из-за изменения размеров экрана за счет скрытия/появления полосы прокрутки.

Можно ли решить этот вопрос без изменения значения св-ва overflow?

Deff 07.02.2013 20:16

<script src="http://code.jquery.com/jquery-latest.js"></script>
<body style="height:1000px">



<script type="text/javascript">
function OffScroll () {
var winScrollTop = $(window).scrollTop();
$(window).bind('scroll',function () {
  $(window).scrollTop(winScrollTop);
});}

OffScroll ();  //Запустили отмену прокрутки

//$(window).unbind('scroll'); //Выключить отмену прокрутки
</script>

rebroff 07.02.2013 20:27

Огромное спасибо!

sanchemba 24.03.2014 18:13

Здравствуйте!
У меня вопрос в продолжение темы.
Данный код позволяет просто запретить прокрутку страницы при появлении модального окна. Но если модальное окно большое и выходит за рамки окна браузера, оно так же, естественно, не прокручивается.
Как сделать так, чтобы модальное окно прокручивалось, а страница, находящаяся на "нижнем слое" - нет, чтобы она оставалась на месте?
Так, к примеру, сделано на сайте Вконтакте. При просмотре, скажем, фотографии, можно прокручивать модальное окно просмотра фотографии, а основная страница при этом остаётся на месте.

animhotep 24.03.2014 19:11

попробуйте overflow: hidden для body

Zverit 22.11.2017 16:30

Цитата:

Сообщение от animhotep (Сообщение 304035)
попробуйте overflow: hidden для body

этого недостаточно для iOS. Вот мое решение https://blog.zverit.com/frontend/201...ody-modal-ios/

Nexus 22.11.2017 17:03

Zverit, ваше решение на 3 года опоздало :)


Часовой пояс GMT +3, время: 19:58.