1

有没有办法preserveAspectRatio使用 CSS、HTML 或其他方法(除了 JavaScript)为每个实例设置 SVG 精灵的值?

例如(这些似乎都不起作用):

<!-- 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>
4

1 回答 1

2

在 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 语法记录在这里

于 2018-06-11T11:44:09.207 回答