所以jQuery的.width()
always returns the clientWidth,无论它是什么。但是如果你想要亚像素精度,you have to opt for getBoundingClientRect。
我的问题是跨浏览器问题。假设我想使用getBoundingClientRects()或getBoundingClientRect()。在今天使用的所有主要浏览器中(即至少95%的人使用过的浏览器),它们是否返回客户区的宽度,即基本上element.clientWidth
,而不管盒子大小?或者如果元素有box-sizing: border-box
,我是否必须减去填充?就此而言,如何获得填充和边距的子像素值?
我正在寻找一个解答当前使用的主流浏览器行为的答案。
答案 0 :(得分:0)
来自MDN:强调我的
返回的值是
DOMRect
对象,它是getClientRects()
为元素返回的矩形的并集,即与元素关联的CSS边框
因此,此方法会返回边框,因此不应受box-sizing
属性的影响。
返回的DOMRect的width
和height
值与offsetWidth
和offsetHeight
属性返回的值相同,但稍后将舍入。 / p>
我只能说这是规范要求UA实施的内容。我不知道不同的实现方式有何不同。 IIRC,getBoundingClientRect
的一些早期实现也实现了width
和height
值,但我不知道这些错误实现的浏览器使用情况。