为什么window.onscroll落后于实际滚动?

时间:2013-06-08 10:36:38

标签: javascript jquery css html5

我正在使用等效代码来定位元素:

$(window).scroll(function(){
    my_element.css("top",$(window).scrollTop() + 50)
});

问题是:在滚动期间,元素不会保持静止。它来回摆动,好像onscroll事件的调用没有像滚动一样快。奇怪的是,有时它只是有效。

2 个答案:

答案 0 :(得分:1)

我建议您在CSS中使用position: fixed,而不是在每个卷轴上调整顶部。这样,无论你滚动的速度有多快,你的航向都会稳定在一个位置。

<div style="font-family: oswald; color: white; position: fixed; top: 50px; ...">...</div>

完全放弃滚动事件处理程序。

或者甚至更好地使用<div class="heading">...</div>

在你的CSS中:

.heading {
    font-family: oswald;
    ...
    position: fixed;
    top: 50px;
}

答案 1 :(得分:0)

这是因为当您 DRAG 并移动滚动条按钮进行滚动时,会根据您执行此操作的速度或速度多次调用滚动事件,并且在此期间,每次都会执行此功能在滚动事件上指定的内容被调用,计算和执行(可能需要几分之几秒才能完成)。

作为一种解决方法,您可以使用CSS位置:固定属性。如果你必须按照自己的方式去做,那么可能的解决办法是稍微延迟吗?