获取元素在窗口中的绝对XY坐标
2009-12-23 00:00:00 来源:WEB开发网有一段时间,为了获取一个可见元素A在窗口中的绝对XY坐标,我是采用以下的方法:
//获取元素A的X坐标
function getLeft(e){
var offset=e.offsetLeft;
if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
return offset;
}
//获取元素A的Y坐标
function getTop(e){
var offset=e.offsetTop;
if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
return offset;
}
主流浏览器都支持。
后来,我知道了,还有这样的一个原生的方法:getBoundingClientRect(),是IE独有的,用来获得页面中某个可见元素A的左,上,右和下分别相对浏览器视窗的位置,但是FF3.0+和Opera9.5+已经支持了该方法,可以说在获得页面元素位置上效率有很大的提高。
var l=obj.getBoundingClientRect().left
var r=obj.getBoundingClientRect().right
var t=obj.getBoundingClientRect().top
var b=obj.getBoundingClientRect().bottom
但是在IE浏览器中实现,还是有些这样那样的小问题,看下图:
查看原图(大图)
图中所示是body元素在IE三种模式下offsetLeft,offsetTop的值,getBoundingClientRect().left,getBoundingClientRect().top的值,左上角的XY坐标,原来 IE7标准的body是这么的怪异,但幸好IE8标准和Firfox是一样的。
getBoundingClientRect()与滚动偏移也有些千丝万缕的关系,参考下背光兄的这篇文章吧!
更多精彩
赞助商链接