【发布时间】:2021-08-29 09:09:56
【问题描述】:
我正在创建一个表格来检查表格数据(如 SQL 查询的结果)并尝试找到最佳布局。
我不知道数字列或其内容,我只知道有些列可能是窄的,有些是宽的。并且该表不应超过其容器的 100%,并且列不应换行,可以隐藏溢出。并且应该以合理的方式利用可用空间。
如何做到这一点?我试过table-layout: fixed(没有它,桌子不会尊重width: 100%并占用更大的空间)但布局并没有利用所有可用空间(见下面的截图)。有没有更好的方法?也许涉及一些 JS 计算(我正在使用 Svelte)?
一个可能的改进是 - 如果列很窄,就让它变窄。但是在下面的示例中,窄列“Aaa”仍然占用了它不需要的额外空间。
示例:
table {
width: 100%;
table-layout: fixed;
}
table td {
white-space: nowrap;
}
table td {
overflow: hidden;
text-overflow: ellipsis;
}
<html>
<body>
<table>
<tr>
<td>Aaa</td>
<td>Bbb bbb bbb bbb bb bbbbbb bb bbbbbb bb bbbbbb bbbbbbbb bb bbbbbb bb bbbbbb bb bbbbbb bb</td>
<td>Ccc cc c ccccc c cccc</td>
</tr>
</table>
</body>
</html>
附言
请注意white-space: nowrap; - 类似问题Table overflowing outside of div 的解决方案不适用于white-space: nowrap; 选项。
【问题讨论】:
-
你绝对不想要
table-layout:fixed,因为这会使你的列宽度相等。如果您只是将布局设置为自动并将宽度设置为 100%,那么您应该拥有您想要的。 -
@Ant 没有
table-layout:fixed表不会尊重width: 100%并且比其父容器占用更多空间。 -
哦,这改变了事情......你实际上想要自动布局但在父级的宽度内,我很确定如果没有对表格宽度的一些硬限制或一堆javascript中的计算。你也应该看看here
-
max-width代替? -
这能回答你的问题吗? Table overflowing outside of div