当向上/向下跳动(并激活滚动)时,滚动是瞬时的(不平滑)并且不会干净地落在一个值上。
如果你把它放在任何站点的控制台中,你可以比较不同的滚动行为:
document.addEventListener("scroll", () => {
console.log("Scrolled");
console.log(window.scrollY);
})
通过鼠标向上/向下滚动(工作正常)
向上滚动,window.scrollY 的最后一个 print 将比上一个小,因为它更靠近视口的顶部
向下滚动,window.scrollY 的最后一次打印会比上一次大,因为它离视口顶部更远
通过箭头键向上/向下滚动(工作正常,与上述相同)
切换时,它会激活滚动,这是它工作不正确的地方
向下滚动,window.scrollY 的最后一次打印将比上一次打印少 1 个像素(*但并非总是如此。有时没关系。)
向上滚动,window.scrollY 的最后打印将比上一个多 1 个像素
例如 Tab DOWN --> 激活滚动(非平滑)
PRINTS IN CONSOLE:
3964.2666015625
Scrolled
4709.2666015625
Scrolled
4708.2666015625 (It "lands" here)
我在 Edge 和 Chrome 中测试了同样的东西,它们正确打印 window.scrollY 并且脚本在那里运行良好。