为什么在Safari中窗口滚动jquery跳跃?

时间:2014-07-01 16:32:45

标签: jquery google-chrome safari scroll

在我的网站上,我在页面顶部有一个基于用户滚动动画的动画。在某个点之后/之后,动画结束并且用户滚动继续。我通过在滚动和调整页面其他部分的scrollTop位置时获取top位置来实现此目的:

$(window).scroll(function(){
     var windscroll = $(window).scrollTop(); 
     sections.each(function(){
          $(this).addClass('no-scroll');
          $(this).css({
               'top': windscroll
          });
          $('#arrow .wrap').addClass('no-scroll');
     });
});

我尝试对我的页面容器进行顶部调整,假设each导致跳跃,但我得到了相同的结果。我还尝试了一个名为jQuery throttle / debounce的“油门/去抖动”插件,但它没有帮助。玩这些选项会使情况变得更糟或没有做出任何改变。

我注意到Chrome中存在一些跳跃性(另一个Webkit浏览器......可能是一个相关的问题?)但它在Chrome中显得微不足道。我可以证明Chrome中的跳跃性,但Safari非常糟糕,我想找到解决方案。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我为它创建了一个jsFiddle:

Very simple scrolling

$(document).ready(function(){
    $('#main').scroll(function(){
        $('#two').css('top', $('#main').scrollTop());
    });
});

我知道如果这种情况发生在许多元素或复杂的计算中,但在这个例子中它只有3个div并且Safari中的滚动令人震惊。