RobB wrote:
[color=blue]
> Justin Koivisto wrote:
>
> (snip)
>
>[color=green]
>>Does that take into consideration absolutely positioned elements when[/color]
>
>[color=green]
>>using CSS?[/color]
>
>
> Yes. The offset[Left/Top/Width/Height] properties are calculated by the
> browser when laying out the page; they're read-only, and available
> regardless of whether CSS was even used to position the object. There
> are a few browser-specific wrinkles that crop up, but the accumulated
> offsets are reasonably accurate. Here's an alternative if you only need
> one coordinate (takes id or object ref):
>
> function getLeft(obj)
> {
> if ('string' == typeof obj)
> obj = document.getElementById(obj);
> var x = 0;
> while (obj != null)
> {
> x += obj.offsetLeft;
> obj = obj.offsetParent;
> }
> return x;
> }
>
> function getTop(obj)
> {
> if ('string' == typeof obj)
> obj = document.getElementById(obj);
> var y = 0;
> while (obj != null)
> {
> y += obj.offsetTop;
> obj = obj.offsetParent;
> }
> return y;
> }
>[/color]
Oops... I was thinking of something slightly different.
I used a (likely inefficient) way to find the position of an object
relative to its absolutely positioned parent (or root if there was no
CSS positioning involved) which worked out to just under 30 lines. I was
hoping to replace it all with that piece. ;)
--
Justin Koivisto -
justin@koivi.com http://koivi.com