如何将多个外部 .svg 文件加载到一个 <svg> 标签中

How to load multiple external .svg file into one <svg> tag

我是 SVG 世界的新手。

目前,我知道我可以使用 <object> 标签将 .svg 文件插入网页,或者使用 <svg> 标签和 javascript 从头开始​​绘制一些东西。

但是,出于某种原因,我想使用 javascript 代码即时创建一些绘图,并向其中导入一些静态外部文件。

我不知道怎么做。

如果可能,我希望能够相对于 "host" svg(即时创建的)的某些元素定位导入的文件。

我更喜欢使用原生 javascript 的技巧,但也欢迎使用经典 svg 库之一的技巧。事实上,我还没有选择使用哪个 svg 库 ;)

有什么想法吗?

如果您不想更改外部 SVG,请使用 SVG 的 <image> tag,其工作方式类似于 HTML <img>:

<image xlink:href="other.svg" x="0" y="0" height="100px" width="100px" />

如果要更改外部 SVG 内容,请使用嵌套 <svg> tags。这允许您将另一个 SVG 定位在您的 SVG 中,同时保留外部 SVG 的坐标等。

<svg>
  <svg x="100" y="100" viewBox="0 0 1000 1000" style="width: 300; height: 300">
    <!-- content of the external SVG file in here -->
  </svg>
</svg>