【发布时间】:2018-01-10 12:48:43
【问题描述】:
我想在我的$(window).scrollTop == 500 时开始一个活动。如果我滚动慢,它会起作用,但如果我滚动快,什么也不会发生。你有什么想法可以解决我的问题吗?
谢谢。
【问题讨论】:
我想在我的$(window).scrollTop == 500 时开始一个活动。如果我滚动慢,它会起作用,但如果我滚动快,什么也不会发生。你有什么想法可以解决我的问题吗?
谢谢。
【问题讨论】:
当元素滚动的每个像素触发scroll 事件时,就会发生这种情况。这可能意味着事件处理程序在一秒钟内被触发数百次,因此浏览器将根据 UI 线程的滴答率“跳过”其中一些事件。
这意味着它可能仅在滚动时检测某些 scrollTop 值,因此在给定您的代码示例时,scrollTop 只能在 480、499、522 读取。因此,即使用户滚动超过 500 像素,您对 == 500 的测试也不会成功。慢速滚动会减轻这种影响,因此它对您有效。
解决方案是通过检查一系列 scrollTop 值来使您的代码更加健壮,例如在您的示例中使用 > 而不是 =:
if ($(window).scrollTop >= 500) {
console.log('You have scrolled down over 500px');
}
【讨论】: