offset
在所有的浏览器里面元素的offsetTop和offsetLeft两个属性都是很有用的。他们会给出你元素相对于父元素的坐标位置。
这段代码会向上查找offsetParent,然后添加offsetTop和offsetLeft。最终无论offsetParent在哪,他都会给出你元素在屏幕上的真正坐标。
解释
这段代码非常简单。先传入要计算的元素,然后设置变量curleft和curtop为0。
function findPos(obj) {
var curleft = curtop = 0;
如果浏览器支持offsetParent:
if (obj.offsetParent) {
每次我们找到一个新的对象的时候,把他的offsetTop和offsetLeft加到curtop和curleft上:
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
小技巧:返回'='的值
下面就是这个技巧:
} while (obj = obj.offsetParent);
这个不是表达式错误。我不想用'=='来比较obj和obj.offsetParent(那也没有用,因为一个元素肯定和他的父元素不相等)。
所以我用'='来把obj.offsetParent的值传递给obj。在这里我对这个技巧有详细的解释。
简单的返回
这个循环会当元素没有了offsetParent的时候结束。当offsetParent存在的时候,就依然会把offsetLeft加到curleft上,把offsetTop加到curtop上。
当循环技术的时候,我们就把坐标返回给调用这个函数的程序。
return [curleft,curtop];}
翻译地址:http://www.quirksmode.org/js/findpos.html
转载请保留以下信息
作者:北玉(tw:@rehawk)
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn