SVG 翻译似乎在 Chrome/Chromium 中表现不同

SVG translate seems to behave different in Chrome/Chromium

https://jsfiddle.net/Lpfa9umq/

代码:

<svg>
    <symbol>
        <circle id="circle1" cx="50" cy="50" r="20" stroke="black" stroke-width="1" />
        <circle id="circle2" cx="25" cy="25" r="10" stroke="red" fill="red" stroke-width="1" />
    </symbol>
</svg>
<svg width="100" height="100">
    <use xlink:href="#circle1" />
    <svg width="50" height="50" transform="translate(20, 10)">
        <use xlink:href="#circle2" />
    </svg>
</svg>

transform 属性在 Firefox 中应用,但在 Chrome/Chromium 中不应用,为什么?我用错了吗?

<svg> 中的

<svg> 混淆了浏览器。而是使用 <g> 标签。

<g transform="translate(20, 10)">
    <use xlink:href="#circle2" />
</g>

在 SVG 1.1 中 <svg> 元素不接受变换属性。在 SVG 2 中是 proposed that they should.

Chrome 和 Firefox 正在试验实现 SVG 2 规范的建议部分。有些东西只能由 Firefox 实现,而另一些只能由 Chrome 实现。许多功能两者都实现,有些功能两者都不实现。

在这种特殊情况下,Firefox 已经实现了 SVG 2 功能,但 Chrome 还没有。

您可以在不支持此 SVG 2 功能的浏览器中获得相同的结果,方法是将 <svg> 元素替换为 <g> 元素或创建 <svg> 子元素在 <g> 元素上并将转换放在 <g> 元素上。