Вы можете обнаружить событие прокрутки браузера для произвольного элемента с помощью:
element.addEventListener('scroll', function (event) {
// do something
});
Я хотел бы иметь возможность различать вертикальную прокрутку и горизонтальную прокрутку и выполнять действия для них независимо.
В настоящее время я делаю это, сохраняя значения element.scrollTop и element.scrollLeft, а затем сравнивая их внутри прослушивателя событий. Например.
var scrollLeft, scrollTop;
element.addEventListener('scroll', function (event) {
if (scrollLeft !== element.scrollLeft) {
// horizontally scrolled
scrollLeft = element.scrollLeft;
}
if (scrollTop !== element.scrollTop) {
// vertically scrolled
scrollTop = element.scrollTop;
}
});
Это отлично работает, однако из https://gist.github.com/paulirish/5d52fb081b3570c81e3a я прочитал что чтение значений scrollLeft или scrollTop вызывает перекомпоновку.
Есть ли лучший способ сделать это, не вызывая перекомпоновки браузера при прокрутке?
scrollLeft
иscrollTop
вашего элемента и смотрите, изменились ли они при обработке события прокрутки, обновляя их в конце обработки, чтобы они были готовы к обработке следующего события? - person Mike 'Pomax' Kamermans   schedule 27.03.2018