私は次のフィドルを持っています:http://jsfiddle.net/yFjtt/1/
アイデアは、ユーザーがヘッダーを過去にスクロールして、ページをさらに下にスクロールしている間、サイドバーを所定の位置に「固定」できるようにすることです。
ページの下部に近づくと、残りのスペースとサイドバーに必要なスペースを計算し、固定位置を維持しながらサイドバーを上に移動するための負のマージンを追加する必要があります。
ここまではすべて正常に機能します。
次の問題は、サイドバーが必要な範囲だけ上に移動し、下から約10ピクセルの位置に留まるようにすることです。このようにして、サイドバーは、コンテンツを表示するために上に移動する必要があるまで固定されます。その後、すべてが表示されると、下から約10ピクセルで再びスタックします。
これが私がこれを達成しようとしたところです(完全なコードについてはフィドルを参照してください):
if( $(window).scrollTop() > (documentHeight - sidebarHeight) ) {
if( offsetBottom < 10) {
}
else {
$('div.sidebar').stop(true,false);
$('div.sidebar').animate({'margin-top':offset}, 300);
}
} else {
$('div.sidebar').stop(true,true);
$('div.sidebar').css({'margin-top':'0'});
}
ただし、サイドバーはまだページの上方に移動しすぎています...誰か助けてもらえますか?下からのオフセットを計算するのは単純な間違いだと確信しています。