【发布时间】:2015-11-18 05:40:19
【问题描述】:
我希望 SVG 完全适合包含的 TD。不必保留 SVG 的比例。相反,当高度应大于其宽度时,SVG 的高度与其宽度相同。 SVG 下方和上方都有填充。这是我所拥有的:
<html>
<head>
<style>
table {
border-collapse:collapse;
}
.td-svg {
padding: 0px;
display: block;
}
.div-svg {
height: 100%;
display: block;
}
</style>
</head>
<body>
<table>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
<tr>
<td class='td-svg'>
<div class='div-svg'>
<svg viewBox='0 0 100 100' preserveAspectRatio="none"></svg></div></td>
<td>col 2</td>
<td>col 3<br/>continued<br/>continued<br/>continued<br/>continued</td>
</tr>
</table>
</body>
</html>
我认为 SVG 没有填充整个单元格的原因是因为 DIV 没有填充父 TD,但如果我删除 DIV,我会得到相同的结果。
似乎正在发生的是浏览器将 SVG 缩放为与 viewBox 尺寸成比例。现在在上面的代码中,SVG 元素是 70x70。如果将 viewBox 更改为viewBox='0 0 100 50',则 SVG 元素为 70x35。 TD 是 70x92,所以我希望 SVG 也是 70x92。
顺便说一句,SVG 在代码 sn-p 输出中的位置与将代码复制到文件中并运行它的位置不同。
【问题讨论】: