Index > はじめての prototype.js ... 要素の絶対位置の計算方法
Fri, January 2, 2009

はじめての prototype.js ... 要素の絶対位置の計算方法

要素の絶対位置を計算する。

問題

id="target" 設定している div エレメントのページに左上を (0,0) としたときの (x,y) 座標を得るにはどうすればいいか。

var x=$('target').absoluteLeft;
var y=$('target').absoluteTop;

といった感じで簡単に取得できる方法がありそうな気がしますが、 ちょっと調べてたところ、親要素からの相対的な位置を示す offsetTop,offsetLeft にしか持っていないようです。 であれば、親の親の親・・・という具合に どんどん親要素をたどり、それぞれの要素の offsetLeft,offsetTop の 合計値を計算すれば、絶対位置は計算できそうです。

親要素を全部たどって絶対位置を計算

prototype.js がなければ面倒すぎてあきらめそうになるコーディングですが、 幸い prototype.js には、要素.ancestors() というすべての親要素の配列を返す便利なメソッドがあります。 したがって、
id="target" 設定している div エレメントのページに左上を (0,0) としたときの (x,y) 座標を得るには...
以下のコードで計算できます。

var x=0;
var y=0;

var ele=$('target');
var array=ele.ancestors();

for( var i=0; i<array.length; i++ ){
    var e=array[i];
    x+=e.offsetLeft;
    y+=e.offsetTop;
}

alert(x);
alert(y);

ありがとう! prototype.js.

 Twitter
follow me on Twitter
 Categories