Win7 の FF、Chrome、IE9、Safari で動作が一貫しているため、これはバグではありません。
私が取り組んでいるアプリは、ホスト ページのサード パーティであるため、CSS は不変です。スクリプトは、新しい div を既存の要素に合わせようとします。
- 本体は位置:相対
- ページの上部に H1 があります
- H1 からのマージンは、ボディ 0,0 が計算される場所によって変化するように見えます。
- 本文に境界線を設定すると問題が解決します - 奇妙な動作に見えますが、ブラウザ間で一貫していますか? (実行可能な解決策ではありません)
- H1マージンを削除すると問題が解決します(実行可能な解決策ではありません)
ここの例では、JS は各ケースを複製するためにコメントされています:
http://codepen.io/anon/pen/EGvlb
これは jQuery のバグではないと思います。H1 マージンと body 要素の間の正当な関係にあるようです。
$(function(){
/* Setting body to position:relative breaks offset()
because H1 margin moves body down */
$(document.body).css({position: "relative"});
/* Strange: putting a border on body fixes things? */
//$(document.body).css({border: "1px solid #000"});
/* Removing H1 margin removes problem */
//$("h1").css({margin: 0});
$("#overlay").css({
left: $("#existing").offset().left,
top: $("#existing").offset().top
})
});