大小相等的表格单元格可以填充包含表格的整个宽度


96

有没有一种使用HTML / CSS(具有相对大小)的方法来使一行单元格拉伸包含它的表的整个宽度?

单元格的宽度应相等,并且外部表格的大小也应使用来动态变化<table width="100%">

目前,如果我没有指定固定大小,单元格会自动调整大小以适合其内容。

Answers:


144

您甚至不必为单元格设置特定的宽度,table-layout: fixed足以均匀地分布单元格。

ul {
    width: 100%;
    display: table;
    table-layout: fixed;
    border-collapse: collapse;
}
li {
    display: table-cell;
    text-align: center;
    border: 1px solid hotpink;
    vertical-align: middle;
    word-wrap: break-word;
}
<ul>
  <li>foo<br>foo</li>
  <li>barbarbarbarbar</li>
  <li>baz</li>
</ul>

请注意,table-layout要使用表格样式元素,必须设置宽度(在我的示例中为100%)。


11
此解决方案更好,并且甚至可以用于动态生成的列
Imran Omar Bukhsh 2013年

如果字符串超过了td最大宽度,则您会遇到麻烦
Sterling Archer 2014年

5
新增中 word-wrap:break-word正如我刚刚发现的那样,将解决此问题
Sterling Archer

113

只需使用百分比宽度和固定的表格布局即可

<table>
<tr>
  <td>1</td>
  <td>2</td>
  <td>3</td>
</tr>
</table>

table { table-layout: fixed; }
td { width: 33%; }

固定表格布局很重要,因为如果内容不适合,浏览器将调整其认为合适的宽度,即,如果不是固定表格布局,则宽度不是一个建议。

显然,调整CSS使其适合您的情况,这通常意味着仅将样式应用于具有给定类或可能具有给定ID的表。


并确保您是td选择器不会选择其他涉及的td:D
Gordon Gustafson

3
您不需要设置width,td因为您可能具有动态的列数…并且它不需要它就可以工作。
ДаниилПронин

4

使用table-layout: fixed作为用于属性tablewidth: calc(100%/3);td假设有3 td)。设置了这两个属性后,表格单元的大小将相等

请参阅演示


2
您不需要它们两者,仅靠任何一种解决方案就足够了。
克里斯·克拉瑟夫斯基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.