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

我的问题是跨浏览器的问题。说我要使用getBoundingClientRects()或getBoundingClientRect()。在当今使用的所有主要浏览器(即至少95%的人使用的浏览器)中,它们是否返回客户区域的宽度,即本质上是element.clientWidth,而与框大小无关?或者,如果元素具有box-sizing: border-box,我是否必须减去填充?为此,我如何获得填充和边距的子像素值?

我正在寻找一个有关当今使用的主要浏览器行为的答案。

最佳答案

来自MDN:强调我的


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


因此,此方法的确返回边框,因此无论如何不受box-sizing属性的影响。

因此,返回的DOMRect的widthheight值将与offsetWidthoffsetHeight属性返回的值相同,但后面将对它们进行四舍五入。



我只能说这就是规范要求UA实施的规范。我不知道不同的实现有何不同。 IIRC,getBoundingClientRect的某些早期实现也对widthheight值进行了舍入,但是我不知道这种错误实现的浏览器用法。

10-05 21:44