通常、これらのことは理解できますが、私が見る限り、このコードは実際のオフセットから約 700 ピクセルずれているようです。
私がここで行っているのは、基本的に、スクロールして固定ヘッダーのすぐ下にあるボタンをロックすることです。コンソール出力をテストすると、このコードによると、ボタンが上から約 713 ピクセルの位置にあることがわかります。ただし、実際には上から約 1300 ピクセルです。713 ピクセルは別の要素のほぼ真ん中を参照するため、論理的にその数を取得することは不可能です。
これが私のコードです。
window.contOffset = jQuery('#cont-step3').offset();
window.contWidth = jQuery('#cont-step3').outerWidth();
jQuery(window).scroll(function(){
if(window.contOffset.top<jQuery(document).scrollTop()){
jQuery('#cont-step3').css({
position:'fixed',
top:'70px',
left:window.contOffset.left+'px',
width:window.contWidth+'px'
});
}else{
jQuery('#cont-step3').removeAttr('style');
}
console.log(window.contOffset,jQuery(document).scrollTop());
});
jQuery('#core-values2').sortable({
update:function(event,ui){
updateValues();
}
});
このコードの私のロジックは、ユーザーが要素をスクロールして通過したときです (約 1300 ピクセルですが、サイトは応答性が高いため、計算する必要があります)。要素にインライン スタイルを追加して、固定位置を指定します。ユーザーが上にスクロールすると、それが削除されます。非常に単純な概念であり、多くのコードは必要ありませんが、この問題は私を困惑させ、最大で 5 分かかるスクリプトの場合、既に 2 時間のデバッグに費やしました。
他の誰かがこれに遭遇しましたか?私は何かを完全に見逃していますか?私は以前に同様の方法を使用しましたが、問題はありませんでした。
jQuery 1.10.2 を使用しています
ここで進行中のフィドル jsfiddle はスクロール/許可しないため、この例ではテストを試みるためにさらに何かが必要になる場合があります。