【发布时间】:2017-03-03 23:41:34
【问题描述】:
这似乎是一个愚蠢的问题,可能是一个骗局,但我一时找不到好的解决方案,所以终于敢问了。
我想在 html 文档中放置一个<svg> 元素并满足以下要求:
- 图像被放置为
<svg>html5 元素,而不是外部svg 文件。 (其实我是想用D3.js动态生成。) - 图像放置在屏幕的中心,垂直和水平。
- 图片的实际大小不应超过某个预定义的值(如
15cm × 15cm)。 - 如果当前屏幕的宽度或高度小于
15cm,则应缩放图像(保持纵横比)使其适合屏幕。不应剪裁图像的任何部分。图片应放在中间。
与this article 中描述的要求基本相同。它说我应该使用preserveAspectRatio="xMidYMid",但没有给出如何使用它以及它如何对应于文章中描述的其他技巧的示例。 This article 建议 preserveAspectRatio="xMidYMid meet",但我再次无法重现那里提供的示例以满足我的所有要求。
我当前的代码是这样的,但它不适合高度并且不垂直居中。
.svg-container {
height:100%;
width:100%;
max-height:15cm;
max-width:15cm;
margin: 0 auto;
}
<div class="svg-container">
<svg id="picture" preserveAspectRatio="xMidYMid meet" viewBox="0 0 100 100">
<circle cx=50 cy=50 r=50></circle>
</svg>
</div>
【问题讨论】:
-
你事先知道长宽比吗?也就是说,SVG 的
viewBox是给定的吗?