SVG 精灵:每个实例 preserveAspectRatio

SVG sprites: per-instance preserveAspectRatio

是否有任何方法可以使用 CSS、HTML 或其他方法(除了 JavaScript)?

例如(none 似乎有效):

<!-- inline html on <svg> -->
<svg preserveAspectRatio="xMinYMin">
  <use xlink:href="/svg/icon.svg">
</svg>

.

<!-- inline html on <use> -->
<svg>
  <use xlink:href="/svg/icon.svg" preserveAspectRatio="xMinYMin">
</svg>

.

<!-- inline css nested in <svg> -->
<svg>
  <style>svg { preserveAspectRatio: xMinYMin; }</style>
  <use xlink:href="/svg/icon.svg">
</svg>

.

<!-- inline css nested in <use> -->
<svg>
  <use xlink:href="/svg/icon.svg">
    <style>svg { preserveAspectRatio: xMinYMin; }</style>
  </use>
</svg>

.

<!-- head/external css -->
<style>
  .icon,
  .icon svg {
    preserveAspectRatio: xMinYMin;
  }
</style>

<svg class="icon">
  <use xlink:href="/svg/icon.svg">
</svg>

在 SVG 1.1 中,您只能使用 <image> 元素来引用完整的文件。 SVG 2 放宽了这一点,以便 <use> 元素可以指向完整的文件,但我不确定是否有任何 UA 实现了这一点。

对于图像元素,您可以这样做...

<svg>
  <image width="100" height="100" xlink:href="/svg/icon.svg#svgView(preserveAspectRatio(none slice))">
</svg>

在 SVG 1.1 中,图像的宽度和高度是强制性的。 svgView 语法是 documented here