js中getBoundingClientRect的作用及兼容方案

1、getBoundingClientRect的作用

getBoundingClientRect用于获取某个html元素相对于视窗的位置集合。
执行 object.getBoundingClientRect();会得到元素的top、right、bottom、left、width、height属性,这些属性以一个对象的方式返回。

2.getBoundingClientRect上下左右属性值解释

主要是left和bottom要解释一下,left是指右边到页面最左边的距离,bottom是指底边到页面顶边的距离。
看图:

3. 浏览器兼容性

ie5以上都能支持,但是又一点点地方需要修正一下,
IE67的left、top会少2px,并且没有width、height属性。

4、利用getBoundingClientRect来写一个获取html元素相对于视窗的位置集合的方法

<div id="test" style="width: 100px; height: 100px; background: #ddd;"></div> <script> function getObjXy(obj){ var xy = obj.getBoundingClientRect(); var top = xy.top-document.documentElement.clientTop+document.documentElement.scrollTop,//document.documentElement.clientTop 在IE67中始终为2,其他高级点的浏览器为0 bottom = xy.bottom, left = xy.left-document.documentElement.clientLeft+document.documentElement.scrollLeft,//document.documentElement.clientLeft 在IE67中始终为2,其他高级点的浏览器为0 right = xy.right, width = xy.width||right - left, //IE67不存在width 使用right - left获得 height = xy.height||bottom - top; return { top:top, right:right, bottom:bottom, left:left, width:width, height:height } } var test = getObjXy(document.getElementById('test')); alert("top:" + test.top + ", right:" + test.right + ", bottom:" + test.bottom + ", left:" + test.left); </script>

转载于:https://www.cnblogs.com/limeiky/p/6179964.html

js中getBoundingClientRect的作用及兼容方案相关推荐

  1. JS中常遇到的浏览器兼容问题和解决方法

    JS中常遇到的浏览器兼容问题和解决方法 参考文章: (1)JS中常遇到的浏览器兼容问题和解决方法 (2)https://www.cnblogs.com/wws-bk/p/9770834.html 备忘 ...

  2. IE中的CSS3不完全兼容方案

    IE中的CSS3不完全兼容方案 Opacity透明度 元素的透明度在IE中可以很方便的用滤镜来实现. view source print? 1 background-color:green; 2 op ...

  3. created写法_vue.js中created方法作用

    这是它的一个生命周期钩子函数,就是一个vue实例被生成后调用这个函数.一个vue实例被生成后还要绑定到某个html元素上,之后还要进行编译,然后再插入到document中.每一个阶段都会有一个钩子函数 ...

  4. 分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容

    问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log.console.info.console.group.console.warn.console.error代码来查看JS ...

  5. 冒号html5,js中冒号的作用 - binaryTree-fe

    说到这个题目,先从今天和朋友讨论一个问题开始.{a:1,b:2}直接在控制台输出时会报错"Uncaught SyntaxError: Unexpected token :":一开始 ...

  6. js里css不起作用,CSS文件在NODE js中不起作用

    出于某种原因,我已将我的css文件附加到我的html文件中.然后我在节点js中使用express打开html文件.但是,当我通过节点js运行Web服务器时,css文件无法打开.我认为既然css文件包含 ...

  7. js中return的作用及用法

    这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数 ...

  8. ubuntu永中office2012个人版公式字体兼容方案

    在ubuntu下安装了最新的永中office2012个人版,发现公式显示于微软office有较大差异,出现了乱码,发信问了永中的客服,是因为缺少相关字体造成.鉴于版权问题,永中没有集成,但是我们自己可 ...

  9. js中继承的几种用法总结(apply,call,prototype)

    本篇文章主要介绍了js中继承的几种用法总结(apply,call,prototype) 需要的朋友可以过来参考下,希望对大家有所帮助 一,js中对象继承 js中有三种继承方式 1.js原型(proto ...

最新文章

  1. 迪士尼“新顶流”,火不到娱乐圈
  2. erlang精要(27)-异常处理
  3. python 为何要学16进制,从十六进制Python中的补
  4. 网络监控系统中如何选择工业交换机?
  5. ReactNative简介、开发环境、调试、常用组件、useState状态、FlatList组件、SectionList组件、Platform 模块、定义样式、图片组件、触摸事件、打包apk发布版
  6. 为什么用java开发app_安卓开发为什么选择用Java语言
  7. 晨哥真有料丨恋爱的感觉是什么样子?
  8. Java基础学习总结(99)——Java代码性能优化总结
  9. linux安装mysql deb_Ubuntu下通过deb的bundle文件安装MySQL
  10. handbrake中文版下载 | HandBrake(大菠萝视频格式转换器)官方中文版V1.3.3视频格式转换器哪个最好用
  11. 2020届春招实习面经(含阿里、腾讯、网易、京东、华为、美团、快手、字节跳动)
  12. 百度地图api的实现
  13. Codeforces 1398 F. Controversial Rounds —— 线段树+dp
  14. canvas教程7-炫彩小球
  15. JavaScript妙用
  16. 百度天气API 获取天气
  17. Windows 7国家语言支持
  18. 10G万兆光模块怎么用?组网方案详解
  19. 报错:NoSuchAlgorithmException: Algorithm HmacSHA1 not available
  20. 前端和后端的JSON数据交互

热门文章

  1. 利用缓冲流读取跟写入
  2. mac实现ssh的免密远程登录
  3. HTML动画(难点)
  4. Linux内存管理(一)——从硬件角度看内存管理
  5. 全志t3linux驱动_全志A20GPIO驱动分析|Android驱动及系统开发交流区|研发交流|雨滴科技技术论坛 - Powered by Discuz!...
  6. (89)多周期时序约束(四)
  7. (80)Vivado综合约束方法
  8. (150)System Verilog仿真结束机制
  9. (14)System Verilog 常量const详解
  10. 移动端安全测试主要涉及_Android APP安全测试基础