Событие wheel
в Firefox >= 17 имеет свойство deltaMode
. При использовании OS/mouse я использую значение 1
(или DOM_DELTA_LINE
). Этот параметр означает, что значения событий deltaX
и deltaY
измеряются в строках, а не в пикселях. Конечно, если я притворяюсь, что дельта - пиксели, скорость прокрутки намного медленнее, чем обычно в Firefox.
В Chrome 31 используется deltaMode
0
(или DOM_DELTA_PIXEL
), что позволяет мне моделировать прокрутку с нормальной скоростью.
Если бы я смог преобразовать значения строк в значения пикселей, я бы установил все. Но я не могу найти отрывок документации о том, что такое "линия". Я попытался изменить font-size
и line-height
в Firefox, что не изменило поведение прокрутки.
Кто-нибудь знает, как определяется "строка"? W3C просто говорит: "Это касается многих элементов управления формой".
Изменить: здесь скрипку, чтобы продемонстрировать странность. Когда Firefox находится в режиме DOM_DELTA_LINE
, нет постоянного отношения между пикселями и линиями - это повсюду. И когда я переключаюсь на использование трекпада вместо мыши, вызывая переход Firefox в режим DOM_DELTA_PIXEL
, также нет согласованного отношения. С другой стороны, в Chrome 31 отношение почти всегда очень близко к 1:1 в режиме DOM_DELTA_PIXEL
.
Проблема с хромом: выполнить событие колеса DOM3
Ошибка Bugzilla: выполнить событие колеса DOM3
Обновление:. Прокрутка одним тиком колесика мыши в Firefox, где deltaMode
- DOM_DELTA_LINE
, дельта пикселя зависит от CSS font-size
, но не от line-height
. См. эту скрипку для демонстрации. Такое поведение наблюдается только при очень медленном нажатии колеса. Со скоростью или импульсом отношение линии к пикселю не предсказуемо в любом конкретном случае или в совокупности. Насколько я могу судить, не существует способа эмулировать поведение прокрутки Firefox с использованием дельта-измерений, предоставляемых в режиме DOM_DELTA_LINE
.
В режиме DOM_DELTA_PIXEL
поведение почти идеально соответствует пикселю. То есть отношение между фактическими пикселями, прокручиваемыми и сообщенным значением дельта пикселя, составляет почти ровно 1, что показано в той же самой скрипке.
I подал ошибку с Mozilla, утверждая, что поведение события wheel
в DOM_DELTA_LINE
не полезно, поскольку оно не предсказуемо ( т.е. это уравнение, где и единица, и величина являются переменными). Проблема была отмечена как недопустимая, поскольку ожидаемое поведение для события wheel
должно проходить через собственные дельта, предоставляемые ОС, несмотря на то, что сам Firefox не соблюдает эти дельта.
Я оставлю этот вопрос открытым, надеясь, что DOM_DELTA_LINE
будет определен спецификацией где-нибудь. Насколько я знаю, зависимость от font-size
(а не line-height
) еще нигде не описана.