我想自动滚动到顶部,但如果用户开始滚动则会挽救。
我目前所拥有的内容会过早停止动画,因为滚动动画本身就是滚动 - 所以它会触发“滚动发生时停止滚动”动作。
function stop_scrolling_to_top(){
// stop animation attached to selector
$('html, body').stop();
}
// scroll to the top automatically
$('html, body').animate({ scrollTop: 0}, 1400, "easeOutQuint", function(){
// callback when animation complete
do_not_do_when_scrolling(stop_scrolling_to_top);
});
// stop animation if scrolling starts
do_when_scrolling(stop_scrolling_to_top);
有没有办法确定滚动是由人还是js触发?完全有更好的方法吗?
答案 0 :(得分:1)
希望这会有所帮助。
它会侦听鼠标滚轮事件+可用于在页面上滚动的键(向上/向下翻页,空格键,箭头键等):
$(document).keyup(function(e){
if($.inArray(e.which, [33,34,32,38,40]) !== -1)
console.log('key');
//potential scroll by key
});
$(document).bind((/Firefox/i.test(navigator.userAgent))
? 'DOMMouseScroll'
: 'mousewheel', function(e){
var evt = window.event || e;
evt = evt.originalEvent ? evt.originalEvent : evt;
var delta = evt.detail ? evt.detail*(-40) : evt.wheelDelta;
if(delta > 0)
console.log('mousewheel up');
//scroll up
else
console.log('mousewheel down');
//scroll down
});
如果您注意到“您的”滚动有效,请像上面那样停止:
if($('html, body').is(':animated'))
$('html, body').stop();
答案 1 :(得分:-1)
为什么不简单地听一下mousewheel事件。如果它被解雇,用户试图自己滚动。如果用户点击某处停止滚动,你也可以听一下点击事件......