React中的getBoundingClientRect

getBoundingClientRect的归属

getBoundingClientRect一词最先来源于IE,是IE的私有属性,现在已经是一个W3C标准。是的,意思就是说原生js中同样有一个getBoundingClientRect。和react中的一样?准确来说,react中用到的就是原生js中的getBoundingClientRect。

因为你如果想在react中使用getBoundingClientRect,就必须先获取到react中的元素的ref,然后ReactDOM.findDOMNode(ref).getBoundingClientRect,ReactDOM当然是需要引入。

ReactDOM.findDOMNode(ref),就相当于js当中的document.getElementById之类的,它返回的是DOM,所以才可以使用getBoundingClientRect。

如果说getBoundingClientRect是react的内置方法,那么就可以直接通过ref.getBoundingClientRect来使用了,但是显然不可以的。

什么是getBoundingClientRect

getBoundingClientRect用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。getBoundingClientRect是DOM元素到浏览器可视范围的距离(不包含文档卷起的部分)。

该函数返回一个Object对象,该对象有6个属性:top,lef,right,bottom,width,height;

这里的top、left和css中的理解很相似,width、height是元素自身的宽高;

但是right,bottom和css中的理解有点不一样。right是指元素右边界距窗口最左边的距离,bottom是指元素下边界距窗口最上面的距离。

getBoundingClientRect的用途

getBoundingClientRect方法常用在需要重新定位的场景,比如说用户引导。在这种需求的时候,不要忘了考虑document.body.scrollTop,有些浏览器是document.documentElement.scrollTop

document.body.scrollTop+document.documentElement.scrollTop;

这两个值总会有一个恒为0,所以不用担心会对真正的scrollTop造成影响。一点小技巧,但很实用。

另外,最好不要使用rem这个单位,因为这个单位在元素的实际加载当中会根据屏幕大小进行一定比例的缩放,但是很多例如getBoundingClientRect此类的方法,返回的都是像素值,这个时候如果你要拿这些值来转化成rem会比较蛋疼。总之rem并不是真实的像素。

转载于:https://juejin.im/post/5cc2cadfe51d456e2f77f15c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值