他の要素の位置を考慮して、要素をページに配置するのに役立つ優れた機能を見つけようとしています。私はjQueryを使用していません。
そのため、ターゲット要素のoffsetParentをナビゲートして、offsetTopsとoffsetLeftsを取得する必要があることを示す多くのソースを見つけました。ほとんど動作しますが、いくつかのテストを行ったところ、一部の親のパディングを考慮していないことがわかりました。CSS を使用してパディングを変更しましたが、それでも同じ数値が得られます。そして、ページに要素を配置すると、親のマージンの近くまたは上にスタックします
私はこの関数を使用しています (そして、Web で見つけたほとんどの関数とかなり似ています)
function getOffset(el){
if(isString(el)) el = document.getElementById(el);
var x = el.offsetLeft;
var y = el.offsetTop;
while(el = el.offsetParent){
x += el.offsetLeft;
y += el.offsetTop;
}
return { left: x, top: y };
}
友達、それを修正する方法を知っていますか?画像を載せたら効果ありますか?私はすでにcssを変更しようとしましたが、問題は1つの要素のパディングであると確信しています.
@編集
Firefox 14.0.1 を使用しています
元のページには他にも多くの要素があり、それが私が取得する数が異なる理由です。しかし、エラーはjsfiddleでも同じです。左に 1 と表示されます (これはおそらく、要素 'Content' の境界線の幅です)。要素「registerArea」の左パディングの 15 ピクセルは考慮されておらず、境界も考慮されていません。