キーボードの下矢印を押すと記事の次のセクションにスクロールダウンし、上矢印を押すと上にスクロールする機能があります。正常に動作しますが、スクロールする直前にわずかな「バウンス」または「ジッター」があります。
関数が 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;
});