まず、このコードを使用して、ナビゲーションバーを常に固定したままにします。
CSS位置絶対を追加した後:
var yOffset = $("#header").offset().top;
$(window).scroll(function() {
if ($(window).scrollTop() > yOffset) {
$("#header").css({
'top': 0,
'position': 'fixed'
});
} else {
$("#header").css({
'top': yOffset + 'px',
'position': 'absolute'
});
}
});
しかし、次の要素にスクロールするために使用されていた次/前のキーイベントが、正しい要素の位置をキャッチしていません。
これがnext/prev要素を参照するための私のコードです。
// scroll to next post
function scrollToNew () {
scrollTop = $(window).scrollTop();
$('.post').each(function(i, h1){
h1top = $(h1).offset().top;
if (scrollTop < h1top) {
$.scrollTo(h1);
return false;
}
});
}
// scroll to previous post
function scrollToLast () {
scrollTop = $(window).scrollTop();
var scrollToThis = null;
$('.post').each(function(i, h1) {
h1top = $(h1).offset().top;
if (scrollTop > h1top) {
scrollToThis = h1;
} else {
return false;
}
});
if(scrollToThis != null) {
$.scrollTo(scrollToThis);
}
}
以前は、キーを押したときにscrollToNewを起動していましたが、固定ナビゲーション(#header)を作成するまでは機能していました。これは、scrollToNewが常に一番上にあるため、ユーザーがスクロールする投稿の見出しが表示されなくなるためです。この問題を回避する方法がわかりません。
どんな提案も本当に役に立ちます。