我刚刚遇到了一个奇怪的弹跳盒计算案例,似乎我还没有掌握全部真相。
首先,边界框被定义为最紧密的框,可以包含未转换的元素。
我一直有这样的印象,对于团体来说,这意味着它基本上得到了所有孩子的边界框的联合。
然而,今天我遇到了这个:
<g id="outer">
<g id="inner" transform="translate(100, 100)">
<rect x="0" y="0" width="100" height="100" />
</g>
</g>
元素的边界框如下:
rect: x: 0, y: 0, w: 100, h: 100
#inner: x: 0, y: 0, w: 100, h: 100
#outer: x: 100, y: 100, w: 100, h: 100
我的期望是,所有的盒子都是一样的,但正如你所看到的,外框不是内部元素的联合(在这种情况下,它将等于#inner 的 bbox)。相反,它考虑了内部元素的转换。
那么,是否可以说一个组的bbox 是其孩子的TRANSFORMED bbox 的并集?或者更编程地说,所有getBoundingClientRect
调用的联合(假设滚动为0,因为getCoundingClientRect
忽略滚动)?
我真的很感激一个链接指向我规范的正确部分。