回答:
.offset()
要素のオフセット位置を単純なオブジェクトとして返します。例:
var position = $(element).offset(); // position = { left: 42, top: 567 }
この戻り値を使用して、他の要素を同じ場所に配置できます。
$(anotherElement).css(position)
offset()
、適切な上部座標を返しません。代わりに、ドキュメント内の要素の上部座標より約300ピクセル多く返します。なぜ??
注$(element).offset()
あなたの要素の位置告げる文書に対して。これはほとんどの状況で問題なく機能しposition:fixed
ますが、予期しない結果が生じる可能性があります。
あなたの文書が ビューポートよりも長く、ドキュメントの下部に向かって垂直にスクロールした場合、position:fixed
要素のoffset()
値は、スクロールした分だけ期待値ます。
position:fixed要素上のドキュメントではなく、ビューポート(ウィンドウ)に関連する値を探しているscrollTop()
場合は、fixed要素のoffset().top
値からドキュメントの値を減算できます。例:$("#el").offset().top - $(document).scrollTop()
position:fixed
要素のオフセット親がdocumentの場合は、parseInt($.css('top'))
代わりに読み取る必要があります。
$(document).scrollTop()