【发布时间】:2019-12-13 11:59:24
【问题描述】:
内联 SVG 似乎并不总是尊重 Safari 中 <svg> 元素上设置的基于百分比的大小。
HTML:
<div class="container">
<svg viewBox="0 0 100 100">
<rect x="0" y="0" width="100" height="100" />
</svg>
</div>
CSS:
* {
box-sizing: border-box;
}
.container {
width: 200px;
height: 200px;
padding: 80px;
background-color: #fcc;
}
svg {
display: block;
fill: black;
width: 100%;
height: 100%;
}
你可以在 CodePen 上看到它:https://codepen.io/pavelp/pen/EEOjNQ
Chrome 输出:
Safari 输出:
有一些方法可以解决这个问题,例如,使用 <svg> 元素的像素大小而不是百分比 - 但假设我需要百分比。
也可以通过用无样式的<div> 包裹<svg> 来修复它:https://codepen.io/pavelp/pen/bvQVER
问题:
是什么导致了这个问题?是 Safari 的错误(如果有,有人知道他们的错误跟踪器中是否有条目吗?)还是规范中的灰色区域?
为什么额外的包装器可以解决问题?
有更清洁的解决方案吗?
【问题讨论】: