获取元素位置信息:getBoundingClientRect

一个神奇的方法。

一、历史

偷个懒,上个传送门:http://www.cnblogs.com/2050/archive/2012/02/01/2335211.html

二、介绍

DOM元素方法,返回一个TextRectangle对象,包含top,left,bottom,right,width,height六个属性,表示元素相对于浏览器显示区域的四个偏移量和元素自身的宽高,都是number,表示的是像素值。

document.body.getBoundingClientRect().top      // 0
document.body.getBoundingClientRect().width    // 600

三、兼容性

getBoundingClientRect方法最先在IE5中出现,后来被W3C接纳成为标准。目前IE5.5+、Firefox 3.5+、Chrome 4+、Safari 4.0+、Opara 10.10+等浏览器均支持该方法,兼容性几乎完美。

但老版本浏览器只有top,left,bottom,right四个属性,没有width和height,不过这两个属性可以算出来,所以兼容写法可以这么写:

var ro = object.getBoundingClientRect();
var Top = ro.top;
var Bottom = ro.bottom;
var Left = ro.left;
var Right = ro.right;
var Width = ro.width||Right - Left;
var Height = ro.height||Bottom - Top;

四、基友

还有一个类似的方法是getClientRects,不过一般用getBoundingClientRect就够了。

具体可见:http://blog.csdn.net/freshlover/article/details/8985887

五、用途

配合scrollTop和scrollLeft可以获取到相对页面的位置:

var X = this.getBoundingClientRect().left+document.documentElement.scrollLeft;
var Y = this.getBoundingClientRect().top+document.documentElement.scrollTop;

这两个属性会有些兼容问题,具体可见:http://www.cnblogs.com/purplefox2008/archive/2010/09/06/1818873.html

时间: 2024-10-25 08:37:44

获取元素位置信息:getBoundingClientRect的相关文章

微信服务号开发-获取用户位置信息

微信服务号开发-获取用户位置信息 在微信公众号开发的中,获取用户位置信息是非常常见的功能需求,通过用户的位置信息,可以做一些地图导航,以及基于LBS的营销活动.下面将介绍微信服务号获取用户位置信息的原理与步骤. 原理 1. 位置信息获取流程 2. 位置信息报文 <xml><ToUserName><![CDATA[gh_public_member_account]]></ToUserName> <FromUserName><![CDATA[o

jquery获取元素位置

获取绝对位置坐标——offset()方法 var top = $(selector).offset().top; var left = $(selector).offset().left; 获取相对位置坐标——position()方法 var top = $(selector).position().top; var left = $(selector).position().left; jquery获取元素位置

使用Sina接口获取地址位置信息

<script type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" charset="gb2312"></script> <script type="text/javascript">     var ss = remote_ip_info['country'] +

Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)

通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参阅! 1 /** 2 * Get element position by jquery, and return integer Array [left distance, top distance, width distance, height distance] 3 * 4 * @author A

【全面总结】js获取元素位置大小

目录 1.关于offset offsetParent(只读) offsetTop(只读) offsetLeft(只读) offsetHeight(只读) offsetWidth(只读) 2.滚动尺寸scroll scrollWidth(只读) scrollHeight(只读) scrollLeft(可写) scrollTop(可写) 3.关于client clientWidth(只读) clentHeight(只读) clientLeft(只读) clientTop(只读) 4.关于client

获取元素样式信息于三中获取方式的区别

大家都知道,用document.getElementById(‘element').style.xxx可以获取元素的样式信息,可是它获取的只是DOM元素style属性里的样式规则,对于通过class属性引用的外部样式表,就拿不到我们要的信息了. DOM标准里有个全局方法getComputedStyle,可以获取到当前对象样式规则信息,如:getComputedStyle(obj,null).paddingLeft,就能获取到对象的左内边距.但是事情还没完,万恶的IE不支持此方法,它有自己的一个实

利用百度地图API获取当前位置信息

利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: 1 <script type="text/javascript"> 2 var map; 3 var gpsPoint; 4 var baiduPoint; 5 var gpsAddress; 6 var baiduAddress; 7 var x; 8 var y; 9 function getLocation() { 10 //根据IP获取城市 1

iOS项目开发实战——使用CoreLocation获取当前位置信息

随着基于位置服务LBS和移动互联网的兴起,你的位置是越来越重要的一个信息.位置服务已经是当前的热门应用如微信.陌陌等社交应用的杀手锏.而在iOS开发中,苹果已经给我们提供了一个位置接口.CoreLocation,我们能够使用该接口方便的获得当前位置的经纬度信息.详细实现例如以下: (1)新建基于Swift的iOS项目.在ViewController中导入CoreLocation接口: import CoreLocation (2)在ViewController类中实现例如以下: import U

windowsphone中获取手机位置信息

首先在界面中加入一个textblock控件以显示信息 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Runtime.InteropServices.WindowsRuntime; 6 using Windows.Foundation; 7 using Windows.Foundation.Collections; 8 using