$(window).scroll 不准确,快速滚动时

Posted

技术标签:

【中文标题】$(window).scroll 不准确,快速滚动时【英文标题】:$(window).scroll not accurate, when scrolling fast 【发布时间】:2012-10-29 21:07:52 【问题描述】:

我正在尝试操纵元素的位置,因此在某些页面滚动位置之间,他的 css 发生了变化。 看看这个简单的例子:http://jsfiddle.net/6RtTX/8/

问题是 - $(window).scroll 不太准确,所以如果我滚动得非常快,它就会变得非常混乱。

有没有办法解决这个问题?我可以在 $(window).scroll 方法中对这些操作进行排队吗?

提前致谢。

【问题讨论】:

去抖动 - 滚动事件经常触发。 试过了 - 没有帮助,去抖动只是跳过了间隔之间的方法调用 对于这个简单的事情,你应该在滚动视图在右侧区域时设置position:fixed 这只是一个小例子。我希望能够进行更高级的重新定位 我没有看到你所说的这种“混乱”行为。它在 Firefox 中运行得非常好,滚动流畅,Chrome 默认闪烁很少,除非您使用 position:fixed,否则闪烁不会消失。 【参考方案1】:

尝试像这样更改小提琴的代码:

$(window).scroll(function(event) 
    if ( event.pageY > 100 && event.pageY < 5000) 
        $('.test').css(
            'left' : $(window).scrollTop() - 80,
            'top' : $(window).scrollTop() + 100
        );            
    
);

通过使用传递的事件来获取测量值而不是再次测量,我发现准确性大大提高了。

【讨论】:

它对我不起作用,你使用的是什么 jQuery 版本? 我使用的是 1.8.3,但这应该适用于任何版本的 jQuery。 不确定,因为昨天我注意到最近的 jQ 版本没有 event.pageY

以上是关于$(window).scroll 不准确,快速滚动时的主要内容,如果未能解决你的问题,请参考以下文章

深入理解滚动scroll

js scroll事件不起作用

js window.scroll 怎么判断滚动到底部

急jquery $(window).scroll失效

准确捕捉移动端的“scrollend”事件

JS之scroll