我正在使用此代码滚动到页面上的某个元素:
$("html, body").animate({scrollTop: $(".myDiv").offset().top}, 300);
它可以工作,但存在一个问题:当用户向下滚动而脚本向上滚动时,会出现一些抖动,因为同时有两个不同方向的滚动命令 - 对我来说听起来很合乎逻辑。
我检查了其他一些具有这种滚动功能的网站,没有抖动。那么防止这种情况的诀窍是什么?
我正在使用此代码滚动到页面上的某个元素:
$("html, body").animate({scrollTop: $(".myDiv").offset().top}, 300);
它可以工作,但存在一个问题:当用户向下滚动而脚本向上滚动时,会出现一些抖动,因为同时有两个不同方向的滚动命令 - 对我来说听起来很合乎逻辑。
我检查了其他一些具有这种滚动功能的网站,没有抖动。那么防止这种情况的诀窍是什么?
当您使用带有滚动的动画时,这是一个 jQuery 错误,很好的检测。
我做了一项研究如何关闭滚动并找到这个问题:如何暂时禁用滚动?
这是jsFiddle。点击后你会看到;用户无法滚动直到动画完成。
$('.myDiv').click(function(){
disable_scroll();
$('html, body').stop().animate({ scrollTop: 0 }, 700,function() {
enable_scroll();
});
});
编辑:感谢 galambalazs 顺便说一句。
一个想法 - 尝试连接到滚动事件并使用http://api.jquery.com/stop/来停止你的动画.. 坏主意..
解决方案的相同问题 -让用户滚动停止滚动顶部的 jquery 动画?