Firefox新的平滑滚动功能会导致滚动回调在动画的每一步触发。
有没有办法让它如此
答案 0 :(得分:4)
试试这个:
function throttle( fn, timeout ) {
var tid = 0;
return function() {
clearTimeout( tid );
var args = [].slice.call( arguments ),
ctx = this;
tid = setTimeout( function() {
fn.apply( ctx, args );
}, timeout );
};
}
$(window).on("scroll", throttle( function() {
$('div').eq(0).append('scroll happened');
}, 100));
只有在100毫秒内没有滚动时才会触发滚动。
答案 1 :(得分:0)
这取决于你的目的。我根据您的代码猜测,当用户向下滚动页面时,您想要触发动画,有点像Ben the Bodyguard:http://benthebodyguard.com/index.php
要实现此目的,您可以将动画绑定到页面中的位置。您可以从传递给scroll方法的事件对象获取当前滚动位置。然后,您需要做一些数学运算来确定当前滚动位置是否已经改变到足以触发下一个动画。