WEB开发网
开发学院网页设计JavaScript 获取元素在窗口中的绝对XY坐标 阅读

获取元素在窗口中的绝对XY坐标

 2009-12-23 00:00:00 来源:WEB开发网   
核心提示:有一段时间,为了获取一个可见元素A在窗口中的绝对XY坐标,获取元素在窗口中的绝对XY坐标,我是采用以下的方法://获取元素A的X坐标functiongetLeft(e){varoffset=e.offsetLeft;if(e.offsetParent!=null)offset+=getLeft(e.offsetPare

有一段时间,为了获取一个可见元素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浏览器中实现,还是有些这样那样的小问题,看下图:

获取元素在窗口中的绝对XY坐标

查看原图(大图)

图中所示是body元素在IE三种模式下offsetLeft,offsetTop的值,getBoundingClientRect().left,getBoundingClientRect().top的值,左上角的XY坐标,原来 IE7标准的body是这么的怪异,但幸好IE8标准和Firfox是一样的。

getBoundingClientRect()与滚动偏移也有些千丝万缕的关系,参考下背光兄的这篇文章吧!

Tags:获取 元素 窗口

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接