//获取元素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()与滚动偏移也有些千丝万缕的关系,参考下背光兄的这篇文章吧!