getBoundingClientRect( IE5 以上都支持 )用法详解

getBoundingClientRect用于获取某个元素相对于视窗的位置集合。集合中有top, right, bottom, left等属性。

262132219001037.jpg

Jquery访问:

$('#m-price')[0].getBoundingClientRect()

Js访问:

document.getElementById('m-price-calculate').getBoundingClientRect()

返回元素:

{
    bottom: 553,    //元素下边到视窗上边的距离;
    height: 553,    //元素高度,ie9以上支持
    left: 840,      //元素左边到视窗左边的距离;
    right: 1190,    //元素右边到视窗左边的距离;
    top: 0,         //元素上边到视窗上边的距离
    width: 350      //元素宽度,ie9以上支持
}

对于height,width IE6 ~ IE8 下兼容写法:

var rectWidth = rectObject.right - rectObject.left,
    rectHeight = rectObject.bottom - rectObject.top;

IE兼容性问题:在ie7及ie7以下left和top会多出两个像素。
原因:正常浏览器html元素坐标会从(0,0)开始算起,而IE7及IE7以下的html元素坐标会从(2,2)开始算起,IE8已修复这个bug

兼容写法:

var rectLeft = rectObject.left - document.documentElement.clientLeft || 2,
    rectRight = rectObject.right - document.documentElement.clientLeft || 2,
    rectBottom = rectObject.bottom - document.documentElement.clientTop || 2,
    rectTop = rectObject.top - document.documentElement.clientTop || 2;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,790评论 1 92
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,207评论 0 1
  • byzhangxinxufromhttp://www.zhangxinxu.com本文地址:http://www....
    麻辣小隔壁阅读 1,215评论 0 2
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,169评论 2 19
  • 孩子前些天总动不动说:妈妈,我想要别墅!我当时想脱口而出的是:连房子都买不起,还买什么别墅?可我知道这样太...
    CiciCherry阅读 138评论 0 0