【发布时间】:2014-03-18 17:55:15
【问题描述】:
我正在尝试在流体环境中使用 SVG 元素,使用 % 单位来设置与容器成比例的大小。
如果您包含像图像一样的 SVG 设计,它就像图像一样工作:
<img class="img-svg" src="box.svg" />
您可以使用 CSS 轻松地按比例缩放它,如下所示:
.img-svg { width:100%; height: auto; }
但是
如果你使用内联 SVG,一切都会改变...
<svg class="inline-svg" preserveAspectRatio="xMidYMid meet" viewBox="...">
...
</svg>
这行不通:
.inline-svg { display:block; width:100%; height: auto; }
如果您这样做,它会将 SVG 的框扩大到 100%,但其中的所有元素都将保持相同的大小。这是一个 jsfiddle:http://jsfiddle.net/s_d_p/jA62R/
这样做的正确方法是什么,以便 SVG 内的内容均匀地放大/缩小?
注意 1:我正在寻找 CSS/SVG 解决方案。不是 javascript hack。
注意 2:我找到了 this,但它依赖于固定的 px 单位。
【问题讨论】:
-
preserveAspectRatio 仅在指定了 viewBox 时才有效。
-
@RobertLongson 很好。我把它从我的例子中去掉了,但它在我的真实代码中并且不起作用。任何想法为什么?
-
对我来说似乎在 chrome 中工作:jsfiddle.net/9K9b9
-
@Matthias 该演示也适用于 FF 28.0