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 解析json的代码
Dec 16 Javascript
js 蒙版进度条(结合图片)
Mar 10 Javascript
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
jQuery获取动态生成的元素示例
Jun 15 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
浅谈时钟的生成(js手写简洁代码)
Aug 20 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
Aug 25 Javascript
JS中准确判断变量类型的方法
Jun 01 Javascript
微信小程序拖拽排序列表的示例代码
Jul 08 Javascript
vue设置全局访问接口API地址操作
Aug 14 Javascript
React 条件渲染最佳实践小结(7种)
Sep 27 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
Feb 08 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的历史和优缺点
2006/10/09 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
会计专业推荐信
2013/10/29 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
建设工地安全标语
2014/06/07 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
基于Redis的List实现特价商品列表功能
2021/08/30 Redis