ページの上部に残るナビゲーション バーを作成しています。ユーザーが下にスクロールすると、このバーは縮小し、ユーザーがページの上部に戻ると、ナビゲーション バーは元のサイズに戻ります。
問題:ユーザーが下にスクロールすると、予想どおりナビゲーション バーが縮小します。ただし、ユーザーがページの上部にすばやくスクロールして戻ると、ナビゲーション バーは縮小されたままになり、コールバック関数animate()
内のscrollTop()
関数が数秒後にトリガーされます。
これをデバッグするためconsole.log($(window).scrollTop());
に、ページ上のユーザーの現在の位置を教えてくれました。console.log
ユーザーがスクロールするのと同じくらい速く出力を取得します。しかし、 これはアニメーションが完了すると起動するはずですが、出力{console.log('animated');
後数秒後に表示されません。console.log($(window).scrollTop());
0
animate()
ユーザーが上にスクロールしたときにすばやく応答するにはどうすればよいですか?
JS コード
var navBar = $('#navbar-inner');
var top = navBar.css('top');
$(window).scroll(function() {
console.log($(window).scrollTop());
if($(this).scrollTop() > 50) {
navBar.animate({'marginTop':'-20', 'height':'60'}, 300);
} else {
navBar.animate({'marginTop':'0', 'height':'80'}, 300, function()
{console.log('animated');});
}
});