105

Javascript でページ上のオブジェクトの絶対 x、y 位置を取得したい。これどうやってするの?

obj.offsetTopとを試しobj.offsetLeftましたが、それらは親要素に対する相対的な位置のみを示します。親のないオブジェクトに到達するまで、親のオフセットとその親のオフセットなどをループして追加できると思いますが、もっと良い方法があるはずです。グーグルはあまりヒットせず、SO サイト検索でさえ何も見つかりませんでした。

また、jQueryが使えません。

4

2 に答える 2

177
var cumulativeOffset = function(element) {
    var top = 0, left = 0;
    do {
        top += element.offsetTop  || 0;
        left += element.offsetLeft || 0;
        element = element.offsetParent;
    } while(element);

    return {
        top: top,
        left: left
    };
};

(メソッドは PrototypeJS から恥知らずに盗用されました。コード スタイル、変数名、および戻り値は、罪のない人を保護するために変更されています)

于 2009-09-26T01:02:30.320 に答える