我正在构建一个表格,应该以合理的方式显示数据。如果不需要占用100%的宽度,就不应该占用。
问题在于,我在一列中使用折线图,当我使用div
构建该图表时,它运行良好,但是当我使用SVG
时,表格会占用100%(我更喜欢使用SVG,因为它更灵活)。
下面是这个表格应该看起来像的样子(如果使用div
而不是SVG
来显示折线图,则是这样的):
而当使用SVG
时,表格会占用整个页面宽度,效果如下:
我认为这是因为SVG
试图获取尽可能多的空间,并将表格膨胀到100%。
如何解决这个问题?我正在使用固定布局和固定百分比列宽的表格。我不知道将要在表格中显示的数据和表格宽度,因此表格应该自动确定最佳宽度。
简化示例:
table { table-layout: fixed; max-wdith: 100% }
tr > * { border: 1px solid black; }
svg { display: block; }
<table>
<tr>
<th style="width: 50%;">a</th>
<th style="width: 50%;">b</th>
</tr>
<tr>
<td>a</td>
<td>
<svg height="1rem" width="100%">
<rect x="0%" y="25%" width="100%" height="50%" fill="black"/>
</svg>
</td>
</tr>
</table>
P.S.
修复它的一种可能的方法是初始时隐藏SVG
线形图,让表格在没有 SVG
的情况下呈现。然后等待1毫秒左右,当表格被渲染时,使用JS测量表格宽度,并显式地设置该宽度。然后显示SVG
线形图,表格将受到之前测量的显式宽度的限制。但也许有更简单的方法?
<th style="width=50%;">
should be<th style="width: 50%;">
- franklylately