html - 设置了最大宽度/高度时,SVG 图像不会保留其纵横比
问题描述
我有一个定义了宽度和高度的 SVG 图像:
<svg width="1280" height="1920"> ... </svg>
我希望它保持其纵横比,但也遵守以下规则,因此它始终适合视口:
max-width: 100vw;
max-height: 100vh;
它适用于基本图像或画布元素,但不适用于 SVG 图像。有任何想法吗?我不想添加额外的标记来实现这一点。
svg {
max-width: 100vw;
max-height: 100vh;
background-color: green;
}
<svg width="1280" height="1920"></svg>
PS:SVG图像可以是任意宽度/高度,所以并不是宽度总是小于高度。也可以反过来。
解决方案
- 您需要使用
viewBox
- 作为建议的自删除答案。 - 你被误导了,因为你正在
background-color: green
使用<svg>
.
SVG 的行为与位图图像(如 PNG)不同。可以增长到容器的<svg>
大小,但 SVG 的内容将被缩放以适应该容器。
例子
svg {
max-width: 100vw;
max-height: 100vh;
background-color: green;
}
<svg width="100%" height="100%" viewBox="0 0 1280 1920">
<rect width="1280" height="1920" fill="red"/>
</svg>
要控制内容的缩放方式,您可以使用该preserveAspectRatio
属性。
推荐阅读
- html - 中间的空间
标签和纸张
- unit-testing - vue.js test:unit w test-utils & Jest : [vue-test-utils]: wrapper.destroy() 只能在 Vue 实例上调用
- python - 将 scala 中的伴随对象转换为 Python
- java - 无法选择选择框
- apache-cloudstack - Cloudstack虚拟路由器未启动
- azure - Microsoft Azure 中的 Functions Bot、Web App Bot 和 Bot Channels 注册之间的区别?
- r - data.table 引用语义:遍历所有列的内存使用情况
- javascript - Javascript 中 Cron 表达式的正则表达式
- javascript - history.pushState() 导致浏览器导航
- c++ - 将对象添加到数组时的 EXC_BAD_ACCESS