Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > overflow-y: scroll, сдвиг страницы


Автор: serghd 23.10.2012, 11:02
Привет всем. Очень интересует, можно ли как-то исключить прокрутку страницы, если я двигаю колесом, к примеру, на div-е, у которого установлено "overflow-y: scroll;" ?  То есть, на нём есть своя вертикальная прокрутка, она работает, но при достижении нижней границы div'а начинает прокручиваться сама страница. Можно ли как-то от этого избавиться? Спасибо.

Автор: Aliance 23.10.2012, 11:30
В теории можно повесить на mouseover функцию, которая бы вырубала прокрутку к документа (preventDefault), а на mouseout возвращала бы обратно.

Автор: serghd 23.10.2012, 12:11
Цитата(Aliance @ 23.10.2012,  11:30)
В теории можно повесить на mouseover функцию, которая бы вырубала прокрутку к документа (preventDefault), а на mouseout возвращала бы обратно.

способ неплох, за исключением того, что при этом пропадает сам контрол скрола справа. В хроме получается, что страница "дёргается" при его исчезании/появлении.
Я о:
Код

 document.body.style.overflowY = "hidden";


Можно также использовать и:
Код

 window.onmousewheel = function (e) {return false;};


Тогда скрол справа исчезать не будет, но при прокрутке колесом на самом диве тоже ничего не будет происходить. Вот мля.

Автор: Aliance 23.10.2012, 13:03
Я именно второй вариант и имел ввиду. Ничего не происходит, потому что событие опускается вниз по дереву DOM и срабатывает для div. Чтобы понимать, о чем я говорю, прочитай эту http://forum.vingrad.ru/topic-32350.html.

Я набросал небольшой http://jsfiddle.net/Aliance/gBk9Y/3/. Если в if запихать условие, при котором прокрутка так же будет отключаться при опускании ползунка до конца, либо наоборот ( $().scrollTop() в помощь), то думаю будет работать как тебе нужно.

Автор: serghd 23.10.2012, 13:48
Цитата(Aliance @ 23.10.2012,  13:03)
Я именно второй вариант и имел ввиду. Ничего не происходит, потому что событие опускается вниз по дереву DOM и срабатывает для div. Чтобы понимать, о чем я говорю, прочитай эту http://forum.vingrad.ru/topic-32350.html.

Я набросал небольшой http://jsfiddle.net/Aliance/gBk9Y/3/. Если в if запихать условие, при котором прокрутка так же будет отключаться при опускании ползунка до конца, либо наоборот ( $().scrollTop() в помощь), то думаю будет работать как тебе нужно.

спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)