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继承的实现
Oct 24 Javascript
基于jQuery选择器的整理集合
Apr 26 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 Javascript
JQuery.validate在ie8下不支持的快速解决方法
May 18 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
Sep 06 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
Sep 28 Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 Javascript
Vue自定义指令详解
Jul 28 Javascript
js核心基础之构造函数constructor用法实例分析
May 11 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
vue如何使用外部特殊字体的操作
Jul 30 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 !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
2011/01/07 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python三大神器之fabric使用教程
2019/06/10 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
python join方法使用详解
2019/07/30 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
管理学专业个人求职信范文
2013/12/13 职场文书
小学美术教学反思
2014/02/01 职场文书
商铺门前三包责任书
2014/07/25 职场文书
卖房授权委托书样本
2014/10/05 职场文书
党员自评材料范文
2014/12/17 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers