以前绝大多数的使用下面的代码来获取页面元素的位置:

[code=”javascript”]var _x = 0, _y = 0;
do{
_x += el.offsetLeft;
_y += el.offsetTop;
}while(el=el.offsetParent);
return {x:_x,y:_y};[/code]

这里有个”offsetParent”问题,所以要写很多兼容的代码,经过不懈的查找终于找到getBoundingClientRect();该方法获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,他返回的是一个对象,即Object,该对象有是个属性:top,left,right,bottom;这里的top、left和css中的理解很相似,但是right,bottom和css中的理解有点不一样,看示意图:

以前getBoundingClientRect()是IE特有的,目前FF3+,opera9.5+,safari 4,都已经支持这个方法。

可以滚动滚动条之后点红色区域看各个值的变化:

有了这个方法,获取页面元素的位置就简单多了,

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

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

转载于:https://www.cnblogs.com/h5monkey/p/6045912.html

用getBoundingClientRect()来获取页面元素的位置相关推荐

  1. 获取html元素的位置,如何获取页面元素的位置

    背景:最近在商品列表项目迭代中,需要在商品列表底部增加一个分销商品广告位,另外接收到一个产品曝光度的埋点需求,需要知道产品出现在用户视口后在进行数据统计! 基于虚拟 DOM 数据驱动的思想,最不提倡的 ...

  2. 用Javascript获取页面元素的位置

    制作网页的过程中,你有时候需要知道某个元素在网页上的确切位置. 下面的教程总结了Javascript在网页定位方面的相关知识. 一.网页的大小和浏览器窗口的大小 首先,要明确两个基本概念. 一张网页的 ...

  3. vue 获取元素在浏览器的位置_前端开发JS获取页面元素的位置

    1.网页的大小和浏览器窗口的大小 一张网页的全部面积,就是它的大小.通常情况下,网页的大小由内容和 document元素的clientHeight和clientWidth属性,就代表了网页的大小. f ...

  4. java 获取页面元素的位置_Selenium Java 页面元素定位2

    一.操作目的 1.1 自动化测试常用操作 1.定位网页上的元素,并存储到一个变量中: 2.对变量进行操作,比如点击或输入文字: 3.设定页面元素的操作值: 二.定位方法汇总 2.1 findEleme ...

  5. 使用html元素的getBoundingClientRect来获取dom元素的时时位置和大小

    使用: var section = $('.section'):这是jquery包装的dom元素,其他前端框架返回的可能也是一个包装元素, 我们需要获得的是里面的html的dom元素 然后:secti ...

  6. [html] 精确获取页面元素位置的方式有哪些?

    [html] 精确获取页面元素位置的方式有哪些? let btn = document.querySelector('#ele') let {top, left} = getComputedStyle ...

  7. 获取页面元素的滚动位置,兼容各浏览器

    /***获取页面元素的滚动位置@param {DOM} el Dom元素*return {Object} 元素滚动位置对象*/function getScroll (el) {var d = el,d ...

  8. js,jquery获取页面元素距离浏览器工作区顶端的距离

    先介绍几个属性:(暂时只测了IE和firefox,实际上我工作中用到的最多的是chrome)  网页被卷起来的高度/宽度(即浏览器滚动条滚动后隐藏的页面内容高度) (javascript)       ...

  9. 使用Selenium含蓄等待获取页面元素(附带实际业务需求情景)

    Hello,大家好,又到了小猿分享技术的时间了.这回带来的是使用Selenium去网站上获取部分信息并且执行部分操作以及"含蓄"等待元素加载完成以及截取图片和网页刷新机制的技术点. ...

最新文章

  1. windows下安装whl文件
  2. Nacos配置中心规范
  3. 【计算机视觉】运动目标检测算法文献阅读笔记
  4. 进程和线程的联系和区别
  5. mybatis加载xml配置文件
  6. HTTP请求/响应原理
  7. 机器学习之ID3算法原理
  8. 【好文分享】提升早晨工作效率的小tips
  9. srb话题x-s x-b3-traceid
  10. 5G 技术特点与应用
  11. 笔记本实现wifi热点
  12. ElasticSearch 倒排索引(Inverted Index)| 什么是倒排索引?
  13. jdbc mysql 5.05_JDBC 连接 MySQL 时碰到的小坑
  14. PhpStorm2019 代码自动换行
  15. 创建visio的形状
  16. Nowcoder. 链表的回文结构
  17. Android 自定义View 实例2_Clipping Canvas
  18. Java - 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法
  19. apache的web虚拟主机VirtualHost
  20. gprs模块连接到服务器,如何再使用AT命令

热门文章

  1. Could not find a file system implementation for scheme ‘hdfs‘.
  2. intellij2018使用2019的主题
  3. django出现 CSRF cookie not set
  4. 对select的结果进行count统计
  5. sklearn中knn的各种用法总结
  6. intellij2018修改代码背景颜色
  7. Could not run curl-config
  8. 语音识别(四)——DTW, Spectrogram, Cepstrum Analysis
  9. 关联查询---Mybatis学习笔记(九)
  10. AOP概述及实现原理