прокрутка для div - PullRequest
       14

прокрутка для div

16 голосов
/ 01 июня 2010

Разве элемент div не имеет обработчика событий onscroll?Поведение на моей странице не означает, что обработчик событий div onscroll распознан.

<div id='bd' onscroll='alert("Scroll Called");'></div>

Кроме того,
Свертывают ли события div scroll до событий прокрутки окна, как в случае события DOMпузырится?

Ответы [ 5 ]

16 голосов
/ 09 мая 2013

В зависимости от того, какую версию HTML вы используете, вместо этого вы можете использовать событие onwheel.

Событие onscroll работает, только если выполняются все следующие условия:

  1. В div есть overflow: auto, overflow: scroll, overflow-y: scroll и т. Д.
  2. В данный момент div имеет видимую полосу прокрутки, которая может прокручиваться.
  3. Движение мыши фактически приводит к прокрутке полосы прокрутки.

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

Обратите внимание, что событие onwheel является новым в HTML 5. Согласно w3schools , оно довольно широко поддерживается, однако.

4 голосов
/ 17 мая 2013

Я тоже почесал голову, пока не начал больше узнавать о директивах DOCTYPE. Атрибут onscroll не поддерживается в самой последней версии спецификации HTML. Это покажет как недопустимый синтаксис в Visual Studio. Он может работать во многих браузерах, но все равно является недействительным кодом.

Вместо этого вы можете использовать событие, используя Javascript или jQuery. Я использую такой подход для синхронизации прокрутки на двух отдельных div:

$("#gridTableContainer").scroll(function() {
    HandlingScrollingStuff();
}); 
2 голосов
/ 01 июня 2010

Да, но элемент должен иметь полосу прокрутки. Вы можете указать его с помощью overflow: auto (что дает вам полосу прокрутки, когда содержимое достаточно высокое) или overflow: scroll. (Они также могут быть установлены специально для x & y overflow-y: scroll ...)

Хотя они не всплывают после прокрутки элемента div, окно начнет прокручиваться. (В основном, если div может прокручивать, он будет перехватывать событие прокрутки, но если не может, то он перейдет на страницу)

1 голос
/ 01 июня 2010

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

Например. Mootools имеет событие mousewheel. Демо здесь . (У него есть полосы прокрутки, но вы можете использовать Firebug, чтобы удалить полосы прокрутки и попробовать - это все еще работает).

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

0 голосов
/ 12 ноября 2013

JQUERY scroll () может вам помочь.

$("#gridTableContainer").scroll(function() {
    HandlingScrollingStuff();
}); 
...