我需要获取已被裁剪的 SVGElement 的 boundingClientRect - 使用此信息,我想将 HTML 元素放置在 SVG 元素的顶部。
我的 SVG 看起来像这样(简化,原来的有多个级联视口和多个级联变换):
<svg width="96" height="80">
<clippath id="clip">
<path d="M 0 0 L 96 0 L 96 80 L 0 80 Z"/>
</clippath>
<g clip-path="url(#clip)">
<image x="0" y="-8" width="96" height="96" xlink:href="…" transform="…"/>
</g>
</svg>
我想将 HTML 元素放在 SVGGElement 之上。为此,我得到了 boundingClientRect
- 被定位的 HTMLElement
- HTMLElements 父级
- 元素 ?这使我可以在应用了 Clipping 的情况下获得 SVGGelement 的 boundingClientRect
在 Chrome 中,这是通过获取 SVGPathElement 的 boundingClientRect 来实现的。在 Opera 和 Firefox 中,生成的 clientRect 的宽度和高度为 0(可能是因为路径元素没有显示)。SVGGelement 本身的 boundingClientRect 从包含的 SVGImageElement 获取其尺寸,而不管应用的剪辑路径如何。
我尝试通过 SVGUseElement 引用 SVGPathElement 并获取它的 boundingClientRect - 这似乎有效。
是否真的有必要引入另一个设置为可见性隐藏和指针事件的 DOM 元素:无或有人知道更好的解决方案吗?