У меня есть этот сайт: http://thc-cup.ucoz.com/
И я использовал fancybox, чтобы добавить в него форму входа/контакта, не переходя на другую страницу для этого. НО... после того, как вы нажмете их и покажете, если вы прокрутите список, вы увидите, что страница позади тоже прокручивается, что раздражает.
Как заставить ее остановить прокрутку, пока fancybox активен?
РЕДАКТИРОВАТЬ
Код на сайте: * Для контактной формы:
<div id="-cu" style="display: none;">$MFORM_1$</div>
* Для ссылки, которая запускает fancybox:
<li><a class="fancybox" href="#-cu">Contact Us</a></li>
Благодарю.
вам нужно установить опцию locked
overlay
на true
как
$(".fancybox").fancybox({
helpers : {
overlay : {
locked : true // false (page scrolls behind fancybox)
}
}
});
Проверьте этот JSFIDDLE
Аналогичный вопрос для этого прокрутки - только расстояние от модального на меньших экранах с медиа-запросами
Ответ, который я дал, был таким. http://jsfiddle.net/mgGS7/1/
Скрипка имеет вашу веб-страницу внутри одного div. Таким образом, заголовок, содержимое и нижний колонтитул находятся внутри div. Это упростит решение.
<div class = "popup">
<div class = "over"></div>
<div class = "window">
<button class = "close">Close</button>
</div>
</div>
<div class = "content">
<p>Filler</p>
<button class = "pop">Popup</button>
<p>Filler</p>
<p>Filler</p>
<button class = "pop">Popup</button>
<p>Filler</p>
</div>
var scroll;
$('.pop').click (function () {
scroll = $(document).scrollTop ();
$('.popup').show ();
$('.content').offset ({top:-scroll}).addClass ('paused');
});
$('.close').click (function () {
$('.popup').hide ();
$('.content').removeClass ('paused').removeAttr ('style');
$(document).scrollTop (scroll);
});
Ваша веб-страница будет внутри .content
. По сути, когда вы нажимаете всплывающее окно, прокрутка веб-страницы сохраняется и фиксируется в этой позиции, чтобы она не могла двигаться. Как только всплывающее окно исчезает, оно больше не фиксируется и восстанавливается положение прокрутки.
Это один из способов сделать это. Другой способ - послушать события колесика мыши и сделать какую-то логику там, например, e.preventDefault()
или что-то еще. Здесь ссылка на прослушивание событий колесика мыши. JQuery/JS: обнаружение попытки прокрутки пользователя без переполнения окна для прокрутки до
helpers
не включен в метод.ready()
(как первый), поэтому не учитывается.