使用animate-scrollTo时jQuery闪烁

gon*_*uke 30 html jquery cross-browser

scrollTo当jQuery animate函数调用该函数时,我遇到了问题.

这是我的代码:

$("#button").click(function(){
    $("body").animate({scrollTop: 1400},"slow");
});
Run Code Online (Sandbox Code Playgroud)

单击按钮时,在正文滚动之前会出现闪烁.例如,我在(滚动位置)1000,当我点击按钮时发生以下情况:

  1. 页面/图像打开(滚动位置)1400出现,看起来我已经去了(位置)1400
  2. 然后它再次移动到(位置)1000,这发生得如此之快,看起来像一个闪烁
  3. 最后它像普通卷轴一样滚动到1400 ..

在Firefox上它总是出现,有时也在chrome上.

小智 78

我有同样的闪烁问题.它是由链接中的哈希锚引发的.用preventDefault()修复它:

$("#button").click(function(e){
    e.preventDefault();
    $("body").animate({scrollTop: 1400},"slow");
});
Run Code Online (Sandbox Code Playgroud)

  • 只是为了澄清:问题是由于(1)浏览器执行跳转到锚点(2)然后jQuery跳回并慢慢滚动到锚点. (7认同)

ggz*_*one 7

<a href="#" onclick="return scrollFromTop(1400, 2000);">scroll</a>

function scrollFromTop(offset, duration) {
    $('body').stop(true).animate({scrollTop: offset}, duration);
    return false;
});
Run Code Online (Sandbox Code Playgroud)

有同样的问题...通过在点击处理程序上返回false来修复它