有一个技巧,涉及设置一些单元格为非常小的宽度,然后应用 white-space: nowrap
属性:
<table>
<tr>
<td class="min">id</td>
<td class="min">tiny</td>
<td>Fills space</td>
<td>Fills space</td>
<td class="min">123</td>
<td class="min">small</td>
<td>Fills space, wider</td>
<td>Fills space</td>
<td class="min">thin</td>
</tr>
</table>
td {
width: auto;
}
td.min {
width: 1%;
white-space: nowrap;
}
演示
正如您在上面的示例中看到的那样,nowrap
强制表格单元格防止任何换行,并因此将其宽度与最小可能对齐。
注意:如果您有一个thead
,则需要将td
的样式应用于th
。
更新#1:省略号(...)
要自动将较长的列折叠为省略号,您可能正在寻找text-overflow: ellipsis
:
td.cell-collapse {
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
}
在线演示
这也需要将overflow
设置为hidden
,同时具有固定值的width
或max-width
。将cell-collapse
类添加到您希望限制宽度的单元格中。
更新#2:处理Bootstrap
Bootstrap的table
类设置了width: 100%;
,这会破坏这种方法。您可以通过table { width: inherit !important; }
解决此问题。
在线演示
注意:由于表单元格已经具有width: auto;
,因此此方法中的表格已具有全宽度。
以前基于Javascript的解决方案已删除,因为纯CSS-based方法现在在所有现代浏览器上都可以正常工作。原始代码仍然在链接的JSFiddle中被注释掉。