getBoundingClientRect返回一个矩形对象,分别包括 top right bottom left 四个属性。表示元素各边与页面上边与左边的距离。
var box = document.getElementById(‘#box’);
alert(box.getBoundingClientRect().top) //元素上边距离页面上边的距离
alert(box.getBoundingClientRect().left) //元素左边距离页面左边的距离
alert(box.getBoundingClientRect().right) //元素右边距离页面左边的距离
alert(box.getBoundingClientRect().left) //元素左边距离页面左边的距离
IE中 默认坐标从(2,2)开始计算 导致距离比其他浏览器多出2个像素
我们需要做个兼容,巧妙之处在于,这里做兼容,不需要判断浏览器是IE还是非IE
只需要:
function GetRect(element){
var rect = element.getBoundingClientRect();
var top = document.documentElement.clientTop;
var left = document.documentElement.clientLeft;
return {
top:rect.top - top,
right:rect.right - left,
bottom:rect.bottom - top,
left:rect.left - left
}
}