【发布时间】:2014-12-03 22:44:41
【问题描述】:
我正在尝试使用 viewBox 属性构建内联 SVG,但没有明确的宽度或高度属性。我使用 CSS 将 SVG 的宽度设置为 100%。这应该让 SVG 缩放到它的包装容器,保持 viewBox 设置的纵横比。在 Chrome 和 Firefox 中,这可以完美运行!
这是我所说的一个最小的 codepen 示例: http://codepen.io/pcorey/pen/amkGl
HTML:
<div>
<svg viewBox="0 0 100 10">
<text x="1" y="9">hello</text>
</svg>
</div>
CSS:
div {
width: 400px;
}
svg {
width: 100%;
max-height: 100%;
outline: 1px solid tomato;
}
text {
font-size: 10px;
}
viewBox 是 100x10。外部 div 设置为 400px 宽度。这意味着 SVG 的高度应该是(并且在 Chrome/Firefox 中)40px。但是,在 IE 11 中,宽度总是 150 像素(即使 div 的宽度超过 1500 像素...)
在 IE 中是否有解决此问题的好方法?为什么 IE 不能正确处理未知高度?我可以使用“intrinsic aspect ratio”技巧,但这非常丑陋,需要另一个 DOM 元素,并且每次包装器调整大小时都需要重新计算 padding-top。
关于我为什么要这样做的更多信息,我写了一篇关于它的快速博客文章:http://1pxsolidtomato.com/2014/10/08/quest-for-scalable-svg-text/
感谢您的帮助!
【问题讨论】:
-
啊,是的,这行得通。我试过这样做,但我正在使用计算像素填充。如果我使用百分比来代替它,它会完美地工作。谢谢!
-
当您提出问题时,此文章不存在。它深入涵盖了该主题:How to Scale SVG
标签: javascript html css svg