我想为窗口每滚动 27px 做一些事情。我编写了以下代码,放置在scroll
事件处理程序中:
scrollSpy++
if (scrollSpy > 27) {
scrollSpy = 0;
console.log("27px scrolled");
}
但不知何故,它不起作用。
当我滚动非常慢时,事件会定期触发(尽管我无法判断它是否真的在 27px 之后),但是当我快速滚动时,事件似乎是随机触发的/根本不是触发的。
我猜错误在于假设scroll
每个滚动像素都会触发事件,因为这是该scrollSpy++
方法工作的要求。
但是,当然,我不确定这是否真的是错误。我该如何正确地做到这一点?
注意:这个问题与这个问题没有重复,因为接受的答案是针对卷轴的。
编辑:
所以根据答案,我写了这个 if 语句:
if (window.pageYOffset % 27 === 0) {
// do something
}
但它仍然无法正常工作。当我快速滚动时,功能失败。所以它与scroll
事件的触发方式有关。你知道有什么解决办法吗?setTimeout
或者setInterval
也许?