我想使用CSS样式来控制SVG设计的大小。例如...
.svg { width:100%; }
当我从文件中嵌入SVG图像时,它的行为就像任何其他图像一样,运行良好:
<img src="image.svg" class="svg" />
但是当我使用内联SVG时它不起作用:<svg class="svg">...</svg>
< p > SVG的“盒子”会增大,但内容保持不变。
< p >有办法做到这一点吗?你可以使用第一种方法,也是可能最好的方法,就是使用viewBox
属性(该属性区分大小写)。这将使得svg标签内容自动占据定义的宽度和高度,只显示在定义边界内的内容。例如:
<svg width="82" height="82" viewBox="0 0 102 102">
<rect x="1" y="1" width="100" height="100" stroke="black" stroke-width="2" fill="white"/>
<text fill="black" x="10" y="30">FooBarBaz</text>
</svg>
或者,您可以对SVG标记的内容应用svg transform
,方法如下:
<svg width="82" height="82">
<g transform="scale(0.8)">
<rect x="1" y="1" width="100" height="100" stroke="black" stroke-width="2" fill="white"/>
<text fill="black" x="10" y="30">FooBarBaz</text>
</g>
</svg>
最后,您可以尝试使用CSS3 transform
来缩放整个svg元素。这是支持度最低的方法,但我还是提到它,因为您最初要求使用CSS解决方案。如果可能的话,我强烈建议使用上述任何一种解决方案。
<svg width="102" height="102" style="transform:scale(0.8); -webkit-transform:scale(0.8); -moz-transform:scale(0.8); -ms-transform:scale(0.8); -o-transform:scale(0.8);">
<rect x="1" y="1" width="100" height="100" stroke="black" stroke-width="2" fill="white"/>
<text fill="black" x="10" y="30">FooBarBaz</text>
</svg>
svg { width:100%; }
翻译为:将其应用于SVG元素而不是类。这对我有效。 - hipnosis
viewBox
(即“svg 'box'将会增长,但内容保持不变”)有关,这在其他答案和以下回答中已得到解决。另请参阅如何使svg与其父容器一起缩放?。 - showdev