scrollIntoView с плавным поведением, не работающим в chrome, когда вызывается событием wheel - PullRequest
0 голосов
/ 07 мая 2018

Это немного сложно объяснить, поэтому, возможно, самый простой способ понять проблему - это перейти на веб-сайт и сравнить поведение между Firefox (работает отлично, как и ожидалось) и Chrome (scrollIntoView не является работает).

По сути, у меня есть меню в левом столбце, но я не хотел ставить позицию: фиксированную, поэтому это относительная позиция с плавающей точкой. Таким образом, прокрутка для основного содержимого с включенным переполнением.

Теперь у меня есть "приветственное" изображение, которое занимает всю высоту экрана посетителя. Поведение, которое я создал, заключается в том, что когда посетитель прокручивает страницу вниз, он идет прямо к концу изображения. И когда посетитель находится чуть ниже изображения и прокручивается немного вверх, он переходит непосредственно к верхней части изображения. Кроме того, прокрутка в тексте работает обычным образом.

С Firefox все работает нормально, но Chrome не прокручивается, как ожидалось. См. Файл scroll.js на веб-сайте, указанном выше, console.log показывает, что chrome перехватывает событие wheel и вводит scrollIntoView, но не прокручивает.

Это ошибка в chrome, о которой я должен сообщить?

спасибо

1 Ответ

0 голосов
/ 07 мая 2018

Вам нужно взглянуть на значение WheelEvent.deltaMode, чтобы узнать как brwoser сообщает о событии колеса:

WheelEvent.deltaMode

Только чтение

Возвращает длинную без знака, представляющую единицу суммы прокрутки дельта-значений. Допустимые значения:

Constant Value Description

DOM_DELTA_PIXEL 0x00 The delta values are specified in pixels.

DOM_DELTA_LINE 0x01 The delta values are specified in lines.

DOM_DELTA_PAGE 0x02 The delta values are specified in pages.

Хорошая библиотека для стандартизации событий колеса в браузерах: https://github.com/basilfx/normalize-wheel

...