Javascript jQuery animate()页面单独上下滚动
嗨,我对jQuery还是个新手。我正在尝试使页面滚动窗口的高度,并使用jQuery平滑地这样做。当我使用下面的代码时,页面会不断地上下滚动。一个想法为什么`Javascript jQuery animate()页面单独上下滚动,javascript,jquery,jquery-animate,Javascript,Jquery,Jquery Animate,嗨,我对jQuery还是个新手。我正在尝试使页面滚动窗口的高度,并使用jQuery平滑地这样做。当我使用下面的代码时,页面会不断地上下滚动。一个想法为什么` var body = jQuery('body, html'); var newDistance = 0; var movement; var newPosition = 0; jQuery(window).on('scroll',function(){ movement = window.pageYOffset; var
var body = jQuery('body, html');
var newDistance = 0;
var movement;
var newPosition = 0;
jQuery(window).on('scroll',function(){
movement = window.pageYOffset;
var winh = window.innerHeight;
if(movement >= (newPosition + 100)){
newDistance += winh;
jQuery(body).animate({scrollTop:newDistance},{
duration: 'slow'
});
console.log('newd', newDistance);
newPosition = newDistance;
}else if (movement <= (newPosition - 100)){
newDistance -= winh;
jQuery(body).animate({scrollTop:newDistance},{
duration: 'slow'
});
newPosition = newDistance;
}else{
jQuery(body).animate({scrollTop:newPosition},{
duration: 'slow'
});
};
} );
var body=jQuery('body,html');
var newDistance=0;
var运动;
var-newPosition=0;
jQuery(窗口).on('scroll',function(){
移动=window.pageYOffset;
var winh=window.innerHeight;
如果(移动>=(新位置+100)){
newDistance+=winh;
jQuery(body).animate({scrollTop:newDistance}{
持续时间:“慢”
});
console.log('newd',newDistance);
新位置=新距离;
}否则如果(移动我认为这是因为scrollTop
也会触发scroll
事件。所以真正发生的是,当您第一次触发scroll
事件时,它进入回调,动画scrollTop
,然后触发另一个scroll
事件,该事件返回回调,并因此产生一个永无止境的lo。)op.你会怎么做呢?感到筋疲力尽我认为你可以设置一个布尔标志(例如,isAnimating
)在窗口上
范围内,首先将其设置为false
。然后在滚动
回调中,首先要检查此布尔标志的值是否为false
。将所有内容都放在if
子句中。然后在if
子句中,可以设置isAnimating
(或你给它起的任何名字)设置为true
。另外,你在内部将它设置为false
完成调用你的动画
方法。有意义吗?你能分享一把小提琴吗?这样我就可以四处玩转,看看我的建议一开始是否可行?!:)感谢您对此链接的兴趣