ドキュメントに対する要素からのオフセットが必要になります。パディング、マージン、ボーダーなどのスタイルがオフセットの結果に大きく影響する可能性があることに注意してください。オフセットのオンまたはオフを計算したい場合があります。
最後に、パディングとボーダーを内側にプッシュする を使用しているかどうかを確認する必要がありますbox-sizing
(最も一般的なバージョンでbox-sizing: border-box;
)。
document.getElementById('cloud').offsetLeft; //offsetTop
実際のオフセットが得られるまで、他のスタイル (加算/減算) でデバッグするだけです。私はほとんどの場合、スクリーンショットを作成して (または OS X の選択的スクリーンショット機能を使用して) オフセットが正しいかどうかをテストし、他のスタイルでオフセットが正しく計算されている (ピクセルをカウントしている) かどうかを確認します。
以下に少し例を示します。
CSS
#cloud {
height: 500px;
width: 500px;
margin: 20px auto;
border: 1px dotted #CCC;
}
HTML
<body>
<div id="cloud">
<div id="centerBox"></div>
</div>
</body>
JavaScript
'use strict';
console.log(document.getElementById('cloud').offsetLeft);
console.log(document.getElementById('cloud').offsetTop);
出力
main.js: 1 >>> 372
main.js: 2 >>> 20
ここで面白いことに、 がoffsetLeft
原因で動作するかどうかを簡単にテストできますmargin: 20px auto;
。ウィンドウのサイズを変更すると、別のoffsetLeft
.