我有一个功能,当按下键盘上的向下箭头时向下滚动到文章的下一部分,当按下向上箭头时向上滚动。它工作正常,但是在滚动之前会有轻微的“反弹”或“抖动”。
我可以通过让函数返回 false 来部分解决这个问题,但是,返回 false 会吞下按键事件,使我无法使用键盘与浏览器交互。
关于如何在释放键盘的同时消除“抖动”的任何想法?
var $sections = $('.section');
var curr = -1;
$(document).keydown(function(e){
prev = (curr < 0)? $sections.length-1: curr-1;
next = (curr >= $sections.length-1)? -1: curr+1 ;
switch (e.keyCode) {
case 38: // up key
s = $sections.eq(prev).offset().top;
curr = prev;
break;
case 40: // down key
s = $sections.eq(next).offset().top;
curr = next;
break;
default:
break;
}
if (curr == -1 ){
$('html, body').animate({scrollTop: 0}, 'slow');
}
else{
$('html, body').animate({scrollTop: s}, 'slow');
}
return e;
});