显示:新行上的表格单元格

cod*_*iac 18 css

这是我的意思的示例代码:

HTML

<ul class="table">
  <li class="table-cell"></li>
  <li class="table-cell"></li>
  <li class="table-cell"></li>
  <li class="table-cell"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

CSS:

.table {
  display: table;
}

.table-cell {
  display: table-cell;
  width: 25%;
}
Run Code Online (Sandbox Code Playgroud)

问:如何<li>在宽度为50%的新行上显示第三个和第四个(表格单元格)?

问:有没有办法只使用CSS而不是jQuery或Javascript?

cim*_*non 20

简单的答案是:你不能,至少不能用列表.显示设置为的相邻元素table-cell被视为属于同一行(即使未提供行元素,也会为您创建一个匿名元素).由于列表不允许在ul和li之间包含任何其他标记,因此列表无法实现.您将不得不使用不同的标记或不同的样式.

如果您不想修改标记,可以选择以下选项.

列表项上的内联块:http: //jsfiddle.net/XNq74/1/

li {
    display: inline-block; /* could use floats here instead */
    width: 40%;
}
Run Code Online (Sandbox Code Playgroud)

CSS列将是一个合理的选择:http: //jsfiddle.net/XNq74/

ul {
    columns: 2;
}
Run Code Online (Sandbox Code Playgroud)

http://caniuse.com/#feat=multicolumn

Flexbox也可以使用,可以与内联块结合使用:http: //jsfiddle.net/XNq74/2/

ul {
    display: flex;
    flex-flow: row wrap;
}

li {
    flex: 1 1 40%;
}
Run Code Online (Sandbox Code Playgroud)

http://caniuse.com/#search=flexbox

  • 不,空格在内联块对象之间产生4px的差距,你可以做很多事情来摆脱它(参见http://css-tricks.com/fighting-the-space-between-inline-block-elements/ ).因为它们必须是相同的高度,所以flexbox是你的男人:http://jsfiddle.net/XNq74/11/ (3认同)