是否有可能编写一个代码片段,在窗口滚动功能期间将body附加到类?
$(window).scroll(function() {
$('body').toggleClass('scrolling');
});
如果用户正在滚动,则body元素具有“scrolling”类。如果当前未发生滚动,则没有该类。
滚动功能似乎与上面的函数一起快速触发。
是否有可能编写一个代码片段,在窗口滚动功能期间将body附加到类?
$(window).scroll(function() {
$('body').toggleClass('scrolling');
});
没有像“鼠标按下”和“鼠标松开”一样的“滚动开始”和“滚动结束”对: “滚动”事件更像是“刚刚发生的滚动”。如果在n毫秒内没有发生滚动,您可以设置超时来清除您的“滚动”类:
var scrollTimerId;
$(window).scroll(function() {
if (!scrollTimerId)
$('body').addClass('scrolling');
clearTimeout(scrollTimerId);
scrollTimerId = setTimeout(function(){
$('body').removeClass('scrolling');
scrollTimerId = undefined;
},150);
});
可能从性能角度来看并不是很健康,但你可以添加一个 setInterval
函数,每隔几毫秒就移除该类名,并结合你的 scroll
处理程序,在滚动时再次添加它。
$(window).on('scroll', function() {
$('body').addClass('scrolling');
});
setInterval(function() {
$('body').removeClass('scrolling');
}, 100);
或者稍作优化:
setInterval(function() {
document.getElementsByTagName('body')[0].className = '';
}, 100);