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

7
我想调整元素的位置,在特定页面滚动位置之间,更改它的css样式。 看一下这个简单的例子:http://jsfiddle.net/6RtTX/8/ 问题在于 - $(window).scroll不够准确,如果我快速滚动,就会变得很混乱。
有没有解决这个问题的方法?可以在$(window).scroll方法中排队执行这些操作吗?
提前致谢。

去抖动 - 滚动事件经常触发。 - Bergi
尝试过了 - 没有帮助,去抖动只是在间隔之间跳过方法调用。 - LorDex
3
只需在滚动视图进入右侧区域时设置“position:fixed”,即可完成此简单操作。 - Bergi
这只是一个小例子。我希望能够进行更高级的重新定位。 - LorDex
2
我没有看到你所说的“混乱”行为。在Firefox中,它可以完美地使用平滑滚动,而Chrome有一点点闪烁是默认的,除非你使用position:fixed,否则这种闪烁不会消失。 - Fabrício Matté
好的,正如我所说 - 这只是一个小例子,不想使用position:fixed;。请看这个例子http://jsfiddle.net/6RtTX/18/ 并尝试快速滚动页面(使用滚动条)并看看会发生什么。 - LorDex
1个回答

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

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

通过使用传递的事件来获取测量值而不是重新测量,我发现准确性显著提高。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接