【发布时间】:2018-06-27 00:10:51
【问题描述】:
我对 SVG 很陌生,所以如果这是一个明显的问题,我深表歉意。我已经修补了几个小时,似乎碰壁了。
我正在尝试在 HTML 文档中创建一个 SVG 元素:
- 在外部视口上有明确的边界
- 保留内部元素的纵横比
- 不保留外部 SVG 元素的纵横比
- 可以在保持这些限制的同时任意调整大小
这个 JSFiddle 说明了我的意思和我的尝试:
这是相同的代码,否则我无法发布:
<div>
<h2>correct placement and aspect ratio, but cannot be resized without losing relative placement</h2>
<svg viewBox="0 0 100 100" style="width: 100px; height: 100px; border: 1px solid red;">
<circle cx="0" cy="0" r="10"></circle>
<circle cx="50" cy="50" r="10"></circle>
<circle cx="100" cy="100" r="10"></circle>
</svg>
</div>
<div>
<h2>correct aspect ratio of circle, incorrect relative placement</h2>
<svg viewBox="0 0 100 100" preserveAspectRatio="xMinYMin" style="width: 200px; height: 100px; border: 1px solid red;">
<circle cx="0" cy="0" r="10"></circle>
<circle cx="50%" cy="50%" r="10"></circle>
<circle cx="100%" cy="100%" r="10"></circle>
</svg>
</div>
<div>
<h2>correct relative placement, can be resized, but loses internal aspect ratio</h2>
<svg viewBox="0 0 100 100" preserveAspectRatio="none" style="width: 200px; height: 100px; border: 1px solid red;">
<circle cx="0" cy="0" r="10"></circle>
<circle cx="50" cy="50" r="10"></circle>
<circle cx="100" cy="100" r="10"></circle>
</svg>
</div>
这可能吗?我是不是走错了路?
【问题讨论】: