Firefox 的新平滑滚动功能会在动画的每一步触发滚动回调。
FF和Chrome中的DEMO看看区别
有没有办法让它
- 仅在页面完成滚动时触发一个事件
- 使页面像在 Chrome 中一样突然滚动
试试这个:
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 毫秒内没有发生滚动时,它才会触发滚动。
这取决于你的目的。我根据您的代码猜测您希望在用户向下滚动页面时触发动画,有点像保镖本:http: //benthebodyguard.com/index.php
为此,您将动画与页面中的位置联系起来。您可以从传递给滚动方法的事件对象中获取当前滚动位置。然后,您需要做一些数学运算来确定当前滚动位置是否已经改变到足以触发下一个动画。