Fuz*_*yma 1 javascript svg bounding-box getboundingclientrect
我刚刚遇到了一个弹跳箱计算的问题,似乎我还没有掌握全部真相.
首先,边界框被定义为最紧密的框,未转换的元素可以被包围.
我总是在印象中,对于团体而言,这意味着它基本上得到了所有孩子的边界框的联合.
但是,今天我遇到了这个:
<g id="outer">
<g id="inner" transform="translate(100, 100)">
<rect x="0" y="0" width="100" height="100" />
</g>
</g>
Run Code Online (Sandbox Code Playgroud)
元素的边界框如下:
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忽略滚动)?
我真的很感激链接指向我的规格的正确部分.