getBoundingClientRect的快速理解

getBoundingClinetRect:  获取某一个元素相对视窗的位置集合(它是一个方法,返回一个对象集合)

  位置集合主要包括 { top, left, right,bottom  } 等属性

用法: Obeject.getBoundingClinetRect()   (这里的Obeject代表的想要获取该元素的位置集合的DOM元素)

   eg:  var pos = Obeject.getBoundingClinetRect()

        var left = pos.left   // 获取该元素左边相对屏幕左边的位置

        var right = pos.right// 获取该元素右边相对屏幕左边的位置

      var bottom = pos.bottom// 获取该元素下边相对上边屏幕的位置

      var top= pos.top// 获取该元素上边相对屏幕上边的位置

 兼容性问题:    在低版本IE浏览器中会多出2px

 兼容性写法:

    eg:  var pos = Obeject.getBoundingClinetRect()

    var htmlLeft = document.documentElement.clientLeft

    var htmlTop = document.documentElement.clientTop

    var left = pos.left - htmlLeft    // 获取该元素左边相对屏幕左边的位置

    var right = pos.right - htmlLeft  // 获取该元素右边相对屏幕左边的位置

    var bottom = pos.bottom - htmlTop  // 获取该元素下边相对屏幕上边的位置

    var top= pos.top -  htmlTop   // 获取该元素上边相对屏幕上边的位置

  因为现代浏览器中document.documentElement.clientTop 和   document.documentElement.clientLeft  都为0,

  在低版本浏览器中 document.documentElement.clientTop 和   document.documentElement.clientLeft  都为2px

  所以很好的解决了兼容性问题

  

     

时间: 2025-01-16 05:01:27

getBoundingClientRect的快速理解的相关文章

如何快速理解一个全新的嵌入式操作系统(续)

---基于TI CC254X OSAL的分析 当工具链配置完成后,SourceInsight向你展示一份源码工程,不借助百度和开发文档,能否在一两个小时内理解源码的组成框架和接口,进行快速开发? 上一篇<如何快速理解一个全新的嵌入式操作系统>我们已经分析了如何快速理解OSAL的任务调度和任务间通信(其实OSAL只是酷似多任务操作系统的单任务系统),再理解好OASL的消息产生和处理过程,我们就能够进行快速开发了. 一.消息的来源 嵌入式系统的消息包括两种,一是系统消息,包括低电.热插拔等,由系统

快速理解VirtualBox的四种网络连接方式

VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式. 要让自己(或别人)理解深刻,方法就是做比较和打比方,比较之间的不同和相同,拿熟知的事物打比方.先来一张图,通过这张图就很容易看出这4种方式的区别: (注:此图直接取至Finalbug的Blog,表示感谢) 再来用文字做详细的解释(其实归结起来就

如何快速理解一个全新的嵌入式操作系统

---基于TI CC254X OSAL的分析 当工具链配置完成后,Source Insight向你展示一份源码工程,不借助百度和开发文档,能否在一两个小时内理解源码的组成框架和接口,进行快速开发? 在笔者过往撰写的博文中,一直在倡导两个嵌入式学习和开发理念:提高嵌入式系统架构和软件层次形成大局观:掌握从需求的角度去理解新系统和技术这个方法论.在软件大局观作为学习新系统的背景知识的基础上,从软件需求的角度入手就能快速理解和掌握一个全新的系统.本文以TI蓝牙BLE CC254x的源码库和工程为例进行

快速理解RxJava源码的设计理念

前言 我在看过几篇关于RxJava源码分析的博客后,不知是我的水平有限还是源码过于博大精深,导致花了很长的时间才搞清楚其运行原理.我个人觉得应该有更好的办法来快速剖析理解,于是决定写下本文. 本文适合已经看过一些RxJava源码分析资料的同学,不过没看过也没关系.在看本文时可参考这篇博客:RxJava基本流程和lift源码分析,它说得比较全,在此感谢博主大头鬼Bruce. 一.初探RxJava [以下摘录了RxJava基本流程和lift源码分析] 我们先来看一段最基本的代码,分析这段代码在RxJ

[转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!

十分钟快速理解DPI和PPI,不再傻傻分不清! https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for=pc关于UX测试相关的: 之前一直搞的不是很清楚 这个百家号的解释挺好的 简单转帖一下 以后仔细研究,  设计师充电站 18-07-1308:58 72DPI的图片拿去打印会糊吗?手机拍出来的照片是多少DPI?PS里显示72PPI为什么另存为JPG就变成96DPI了? 类似的问题层出不穷.本站很多篇文章都讲到

快速理解JavaScript语法

目录 导论 JavaScript的学习可以跳过哪些 console对象与控制台 console对象 console对象与方法 console.log() console.table() console.count() console.assert() JSON对象 JSON方法 JSON.stringify() JSON.parse() 异步与promise 回调函数 事件监听 Promise 对象 Promise 对象的状态 Promise 构造函数 Promise.prototype.the

快速理解DevOps概念和意义-兼谈SRE

最近几年,由于负责的范围的变化.工作逐渐从某个IT领域或者部门,开始关注到整个IT体系的运转和管理.中间也遇到不少困难,同时也有机会去从更高的层面去学习和实践IT治理.文章主要是总结一下我对DevOps相关的理解和认识. 为什么会有DevOps,解决了什么问题: 现代企业其实都是通过IT系统进行管理和运营的,在变化迅速和竞争激烈的领域,IT系统的新需求数量越来越多,软件发布的频率越来越高,不少互联网公司24小时内会发布几十个到上百个release到生产环境.与此同时,业务对IT服务和系统的稳定性

快速理解C语言指针

新手在C语言的学习过程中遇到的最头疼的知识点应该就是指针了,指针在C语言中有非常大的用处.下面我就带着问题来写下我对于指针的一些理解. 指针是什么?  指针本身是一个变量,它存储的是数据在内存中的地址而不是数据本身的值.它的定义如下: int a=10,*p; p=&a int a=10; int *p=&a; 首先我们可以理解 int* 这个是要定义一个指针p,然后因为这个指针存储的是地址所以要对a取地址(&)将值赋给指针p,也就是说这个指针p指向a. 很多新手都会对这两种定义方

快速理解孤儿进程和僵尸进程

下面是我大约11年前在读APUE(<Unix环境高级编程>)对孤儿进程和僵尸进程的理解,为了便于记忆,采用打比方的方式予以解释. (当然不一定精准,后面我会贴出wikipedia上的专业解释.) 操作系统OS好比一个公司,公司的CEO就是init进程. 任何一个子进程都有父进程,就好比任何一个人都有爹. 这里假定子进程为小明,父进程为小明的爸爸. init进程作为OS公司的CEO,是小明的爷爷(注:小明的爸爸很可能是CEO的第N代后人,N>=1,这里假定N=1). 任何一个进程在退出之后