js中getBoundingClientRect的作用及兼容方案详解


Posted in Javascript onFebruary 01, 2018

1、getBoundingClientRect的作用

getBoundingClientRect用于获取某个html元素相对于视窗的位置集合。

执行 object.getBoundingClientRect();会得到元素的top、right、bottom、left、width、height属性,这些属性以一个对象的方式返回。

getBoundingClientRect()

这个方法返回一个矩形对象,包含四个属性:left、top、right和bottom。分别表示元素各边与页面上边和左边的距离。

var box=document.getElementById('box'); // 获取元素

alert(box.getBoundingClientRect().top); // 元素上边距离页面上边的距离

alert(box.getBoundingClientRect().right); // 元素右边距离页面左边的距离

alert(box.getBoundingClientRect().bottom); // 元素下边距离页面上边的距离

alert(box.getBoundingClientRect().left); // 元素左边距离页面左边的距离

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

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

看图:

 js中getBoundingClientRect的作用及兼容方案详解

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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript实现页面打印的三种方法
Mar 05 Javascript
JS 非图片动态loading效果实现代码
Apr 09 Javascript
javascript在IE下trim函数无法使用的解决方法
Sep 12 Javascript
基于JS实现EOS隐藏错误提示层代码
Apr 25 Javascript
JavaScript面向对象编写购物车功能
Aug 19 Javascript
jQuery实现图片轮播效果代码
Sep 27 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
Dec 04 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
Jan 12 Javascript
bootstrap下拉菜单使用方法解析
Jan 13 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
Mar 03 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
Sep 04 Javascript
深入剖析Express cookie-parser中间件实现示例
Feb 01 #Javascript
JS 实现百度搜索功能
Feb 01 #Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
Feb 01 #Javascript
微信小程序日期时间选择器使用方法
Feb 01 #Javascript
NW.js 简介与使用方法
Feb 01 #Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
Feb 01 #Javascript
Vue组件之自定义事件的功能图解
Feb 01 #Javascript
You might like
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php使用ICQ网关发送手机短信
2013/10/30 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
关于document.cookie的使用javascript
2008/04/11 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Python使用functools实现注解同步方法
2018/02/06 Python
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
详解如何减少python内存的消耗
2019/08/09 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
英语专业求职信
2014/07/08 职场文书
争先创优公开承诺书
2014/08/30 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
导游词之西安大清真寺
2019/12/17 职场文书