Вы можете обнаружить событие прокрутки браузера на произвольном элементе с помощью:
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 вызывает оплату.
Есть ли лучший способ сделать это, не заставляя браузер переходить на свиток?