jQueryでスティッキーヘッダーを作成する際に特定の問題があります。Web で一般的に使用されているスニペットを試してみましたが、どこでも同じバグがあることに気付きました。
特定のドキュメントの高さ (sticky-effect の呼び出しよりも少し多くなるまでスクロール可能) で、スティッキー ヘッダーは と の間position: fixed
でジャンプしposition: static
ます。
HTML:
<header>
<div id="not-sticky"></div>
<div id="sticky"></div>
</header>
<div id="content"> ...
jQuery:
var $sticky = $("#sticky");
var offset = $sticky.offset();
var stickyTop = offset.top;
var windowTop = $(window).scrollTop();
$(window).scroll(function() {
windowTop = $(window).scrollTop();
if (windowTop > stickyTop) {
$sticky.css({
position: 'fixed',
top: 0
});
}
else {
$sticky.css({
position: '',
top: ''
});
}
});
CSS:
header {
width: 100%;
}
#not-sticky {
padding: 50px 0;
width: 100%;
}
#sticky {
padding: 24px 0;
position: relative;
width: 100%;
z-index: 25;
}
ドキュメントの高さを一定に保つために#not-sticky
、と同じ高さのマージンボトムも試してみましたが、同じビクビクしたりスティッキーな効果が発生しました。#sticky
それを修正するアイデアはありますか?