您将需要模拟表格布局行为,如本答案所示。
这不涉及使用实际<table>
元素和子元素!这涉及使用display
属性的某些值,即table
和table-cell
来模拟表格的布局行为。您不想将实际的表格标记用于纯布局,因为这在语义上是不正确的并且不受欢迎。如果您的内容是属于表格的实际表格数据,那么使用实际的<table>
. 我将在这里介绍非表格方式,因为这可能是您想要的。
您的div.container
元素将需要该display: table;
属性才能使其表现得像<table>
. 您还需要table-layout
具有值的规则fixed
,以使您的所有子元素均匀分布。然后,您的div.child
元素将需要display: table-cell;
使它们像表格单元格一样工作。浏览器现在将自动为您的子元素计算均匀分布的布局。请注意,您不再需要/想要width
对子元素的规则,因为浏览器会计算它。容器元素需要某种宽度,否则表格将简单地折叠到仅与其内容一样大。请注意,如果内容宽度大于计算的均匀间隔尺寸,则内容也可能溢出子元素。
最终代码如下,这里有一个fiddle。
HTML:
<div class="container">
<div class="child">AAAAA</div>
<div class="child">BB</div>
<div class="child">CCCCCCCCC</div>
<div class="child">D</div>
<div class="child">E</div>
<div class="child">E</div>
<div class="child">E</div>
</div>
CSS:
.container {
width: 100%;
border: 1px solid black;
display: table;
table-layout: fixed;
}
.child {
border: 1px solid grey;
display: table-cell;
}
另外,关于display: inline-block;
. 它将呈现内联块元素之间的所有空白(您可以将其视为原始小提琴中子元素之间的间距)。这是正常的并遵循规范,但有时是不希望的。您可以在此处阅读有关绕过它的方法。