0

他の要素の位置を考慮して、要素をページに配置するのに役立つ優れた機能を見つけようとしています。私は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 ピクセルは考慮されておらず、境界も考慮されていません。

http://jsfiddle.net/rhPYH/25/

4

1 に答える 1

0

Ok、

display: テーブルを使用して、要素のサイズをそのコンテンツに合わせて自動調整します。何らかの理由で、Javascript aws は、この要素 'registerArea' ( display: table rule and paddingsを持っていた) の正しいサイズを見つけるのにいくつかの問題を抱えています。私がしたことは、 block の表示を変更することでした。それはまだ要素を正しくレンダリングしており、現在Javascriptはパディングを考慮しています。これにより、要素の正しい位置が得られます。

于 2012-08-29T16:41:31.533 に答える