getBoundingClientRect()如何与box-sizing交互?

时间:2017-01-26 07:40:07

标签: javascript css user-interface

所以jQuery的.width() always returns the clientWidth,无论它是什么。但是如果你想要亚像素精度,you have to opt for getBoundingClientRect

我的问题是跨浏览器问题。假设我想使用getBoundingClientRects()或getBoundingClientRect()。在今天使用的所有主要浏览器中(即至少95%的人使用过的浏览器),它们是否返回客户区的宽度,即基本上element.clientWidth,而不管盒子大小?或者如果元素有box-sizing: border-box,我是否必须减去填充?就此而言,如何获得填充和边距的子像素值?

我正在寻找一个解答当前使用的主流浏览器行为的答案。

1 个答案:

答案 0 :(得分:0)

来自MDN:强调我的

  

返回的值是DOMRect对象,它是getClientRects()为元素返回的矩形的并集,即与元素关联的CSS边框

因此,此方法会返回边框,因此不应受box-sizing属性的影响。

返回的DOMRect的widthheight值与offsetWidthoffsetHeight属性返回的值相同,但稍后将舍入。 / p>

我只能说这是规范要求UA实施的内容。我不知道不同的实现方式有何不同。 IIRC,getBoundingClientRect的一些早期实现也实现了widthheight值,但我不知道这些错误实现的浏览器使用情况。