我有一个简单的表格,表格单元格中有SVG:
<html>
<body>
<table style="width: 8em;">
<tr>
<td style="border: 1px solid black;">
<svg viewBox="0 0 1 1" style="width: 1.37em;" preserveAspectRatio="none">
<polyline points="0,0 1,0.5 0,1" style="fill: blue;"></polyline>
</svg>
</td>
<td style="border: 1px solid black;">Lorem ipsum dolor sit amet</td>
</tr>
</table>
</body>
</html>
正如您所看到的,行中的其他单元格可能太长,因此导致行高从默认值更改,从而在SVG及其上下边界之间引入间隙。
如何让SVG自动拉伸或收缩以垂直填充其单元格,而不更改其水平大小?
3条答案
按热度按时间aurhwmvo1#
一个解决方案是将其作为背景图像。您可以将SVG代码放入一个单独的文件中,也可以percent-encode它以在数据URI中使用。
ldxq2e6h2#
另一个解决方案是,相对于td的位置,这样svg就包含在其中,因为svg现在是绝对位置,所以它接受100%的高度,但是位置abosult使元素不占用空间,这就是为什么需要向td添加宽度
现在,为了允许文本在相同的td中,一种方法是使用一点JavaScript来计算高度。我做了一些研究,似乎使一个元素适合父高度归结为3 options,位置绝对值(前面的代码片段),显示Flex和显示网格,posititon绝对值将不允许在同一td中显示文本,显示Flex和网格将删除td的显示表单元格,这将扰乱表。因此,对于一些js,它看卢什像这样:
如果JavaScript不是一个选项,那么我只能想到用div制作的“伪表”,但你必须手动控制列的宽度:
vhmi4jdf3#
您可以将SVG插入到背景中。在这里,我使用以下SVG文档的数据URI:
我不知道表格有多重要,但这可以应用于任何元素,比如这里,一个段落: