これは私が今それを得たとして近い:http://jsfiddle.net/r6kTs/104/
別に事実から、これは*本当に悪いもパフォーマンスを持っているし、おそらくその事実について行うことができる多くはありません、それはまた、働いていません完全には:あなたは、ナビゲーションバー全体が隠れるようにスクロールすると、少し上にスクロールアップして少ししか表示されないようにしてから、まだナビバーが少し残っている状態で再度スクロールし、それはないと思う少し。なぜそうなっているのかは分かっていますが、今は解決策を見つけることができません。多分あなたの誰かができますか?
*編集:実際には、私は自分のサイトでこれを実行しているので、それほどのパフォーマンスはあまり気付かない - はい、それは多くのことを要求するが、それは価値があるかもしれないと思う:)しかし、ハードウェアは低いです。
$(function(){
var lastScrollTop = 0, delta = 5, last = 'up', foo = 99999999, state = 'fixed', lastpos;
$(window).scroll(function(event){
var st = $(this).scrollTop();
// if(Math.abs(lastScrollTop - st) <= delta) return;
if (st > lastScrollTop){
// scrolling down
if(last == 'up') {
if (state == 'fixed') {
lastpos = (document.documentElement.scrollTop - 1);
$("#header").css({'position': 'absolute', 'top': lastpos});
state = 'absolute';
}
last = 'down';
}
} else {
// scrolling up
let posnow = document.documentElement.scrollTop
if ((posnow - lastpos) > 50 || (posnow - lastpos) < 0) {
if (last == 'down') {
foo = posnow - 51;
$("#header").css({'position': 'absolute', 'top': foo});
} else {
if (foo > st) {
$("#header").css({'position': 'fixed', 'top': '0'});
state = 'fixed'
}
}
}
last = 'up';
}
lastScrollTop = st;
});
});
特定のポイントを超えてスクロールした後で、ナビゲーションバーを非表示にしたいですか?あなたはこれのためにシンプルなJSfiddleを一緒に置くことができますか?私はアイデアを持っていますが、それを試してみたいと思っています。 – Phil
@phil:いいえ、1pxあたり1pxがスクロールするようにnavbarを移動します。自然にスクロールします。 – Hillcow
私はそれを理解しています。私が理解していないのは、他のコンテンツと同じように、ドキュメントの上部に相対的にナビバーを配置する方法とは異なる点です。 – Phil