CSS table-cell等宽

Har*_*rry 141 html css html-table

我在表容器中有一些不确定的table-cell元素.

<div style="display:table;">
  <div style="display:table-cell;"></div>
  <div style="display:table-cell;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

是否有一种纯CSS方法可以使表格单元格的宽度相等,即使它们的内容大小不同?

谢谢.

编辑:拥有最大宽度需要知道我认为你有多少个细胞?

Fel*_*Als 293

这是一个有不确定数量的细胞的工作小提琴:http://jsfiddle.net/r9yrM/1/

您可以为每个父级div(表格)修改宽度,否则它将像往常一样100%.

诀窍是table-layout: fixed;在每个单元格上使用和一些宽度来触发它,这里是2%.这将触发另一个表algorightm,浏览器非常努力地遵守指示的尺寸.
请使用Chrome(和IE8-如果需要)进行测试.最近的Safari没关系,但我不记得这个技巧与它们的兼容性.

CSS(相关说明):

div {
    display: table;
    width: 250px;
    table-layout: fixed;
}

div > div {
    display: table-cell;
    width: 2%; /* or 100% according to OP comment. See edit about Safari 6 below */
}
Run Code Online (Sandbox Code Playgroud)

编辑(2013年):当心在OS X上的Safari 6的,它有table-layout: fixed; 错误(或者只是不同,从其他浏览器完全不同的我没有校对CSS2.1 REC表格布局;)).准备好不同的结果.

  • 我遇到了需要在表格单元格上使用100%宽度的相同问题.发生这种情况是因为使用display:table将一个clearfix应用于父元素.由于100%宽度的单元格在IE8中不起作用,我的修复方法是删除clearfix.希望这有助于某人. (3认同)
  • 100%宽度不适用于IE8(惊喜),但2%的初始建议提供了正确的结果. (2认同)

The*_*pha 27

HTML

<div class="table">
    <div class="table_cell">Cell-1</div>
    <div class="table_cell">Cell-2 Cell-2 Cell-2 Cell-2Cell-2 Cell-2</div>
    <div class="table_cell">Cell-3Cell-3 Cell-3Cell-3 Cell-3Cell-3</div>
    <div class="table_cell">Cell-4Cell-4Cell-4 Cell-4Cell-4Cell-4 Cell-4Cell-4Cell-4Cell-4</div>
</div>?
Run Code Online (Sandbox Code Playgroud)

CSS

.table{
    display:table;
    width:100%;
    table-layout:fixed;
}
.table_cell{
    display:table-cell;
    width:100px;
    border:solid black 1px;
}
Run Code Online (Sandbox Code Playgroud)

DEMO.


Jos*_*igo 15

只是max-width: 0display: table-cell为我工作的元素中使用:

.table {
  display: table;
  width: 100%;
}

.table-cell {
  display: table-cell;
  max-width: 0px;
  border: 1px solid gray;
}
Run Code Online (Sandbox Code Playgroud)
<div class="table">
  <div class="table-cell">short</div>
  <div class="table-cell">loooooong</div>
  <div class="table-cell">Veeeeeeery loooooong</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,但是你能解释一下它是如何工作的吗? (3认同)
  • 只是在这里吹毛求疵,但 `0px` 不是一个有效的单位。它应该只是“0”。 (2认同)

Dev*_*ris 5

更换

  <div style="display:table;">
    <div style="display:table-cell;"></div>
    <div style="display:table-cell;"></div>
  </div>
Run Code Online (Sandbox Code Playgroud)

  <table>
    <tr><td>content cell1</td></tr>
    <tr><td>content cell1</td></tr>
  </table>
Run Code Online (Sandbox Code Playgroud)

查看围绕使div像表一样执行的所有问题。他们必须添加table-xxx以模仿表布局

支持表并在所有浏览器中都很好地工作。为什么要抛弃他们?他们必须模仿他们的事实证明他们做得很好。

在我看来,使用最好的工具来完成这项工作,如果您希望使用表格数据或类似于表格数据表的东西就可以使用。

我知道很晚的回复,但值得发言。

  • 有时,您想要非表格数据的东西采用类似表格的布局。例如,导航元素应使用`&lt;nav&gt;`,`&lt;ul&gt;`等。 (6认同)
  • +1是因为它可以工作,而且CSS **仍然在2014年**不能在所有浏览器中正确执行此操作。 (2认同)
  • 创建表的目的是显示表格数据:过去是,现在将是用来显示表格数据的HTML元素,为什么有人会抛弃它们(为此)?表格布局不是“模仿”的:一段时间以来它已经成为CSS2推荐的一部分,并且碰巧HTML表格的默认布局是display:table-etc(自然而然)。我不会花很多时间在模仿div的div或模仿表格,范围或输入的div上:我只是使用CSS进行样式设计。最后,祝IE9运气好,可以将display属性的任何其他值应用于表,tr,td元素。 (2认同)