当 size 为非原生时,我想要一个内联 svg 元素的内容比例。当然我可以把它作为一个单独的文件并像那样缩放它。
index.html: <img src="foo.svg" style="width: 100%;" />
foo.svg: <svg width="123" height="456"></svg>
但是,我想通过 CSS 向 SVG 添加其他样式,因此无法链接外部样式。如何制作内联 SVG 比例尺?
原文由 bjb568 发布,翻译遵循 CC BY-SA 4.0 许可协议
要独立于图像的缩放尺寸指定 SVG 图像内的坐标,请使用
viewBox
SVG 元素上的属性来定义图像的边界框在图像坐标系中的位置,以及使用width
和height
属性来定义相对于包含页面的宽度或高度。例如,如果您有以下内容:
它将呈现为 10px x 20px 的三角形:
现在,如果您只设置宽度和高度,那将改变 SVG 元素的大小,但不会缩放三角形:
如果设置视图框,则会导致它转换图像,使给定的框(在图像的坐标系中)按比例放大以适应给定的宽度和高度(在页面的坐标系中)。例如,要将三角形放大为 100px x 50px:
如果你想将它放大到 HTML 视口的宽度:
请注意,默认情况下会保留纵横比。因此,如果您指定该元素的宽度应为 100%,但高度为 50px,它实际上只会缩放到 50px 的高度(除非您的窗口非常窄):
如果您确实希望它水平拉伸,请使用
preserveAspectRatio=none
禁用纵横比保留:(请注意,虽然在我的示例中我使用适用于 HTML 嵌入的语法,但为了将示例作为图像包含在 StackOverflow 中,我改为将其嵌入到另一个 SVG 中,因此我需要使用有效的 XML 语法)