我需要将一个未知数量的div(可能是大约5的限制)放入父容器中,并始终确保它们保持平分。我不确定这是否可以单独使用CSS,但我想我最好问一下。因此,如果我们知道使用了3个div:
<style>
.menu-button {
float: left;
width: 33%;
}
</style>
<div>
<div class="menu-button">Button X</div>
<div class="menu-button">Button Y</div>
<div class="menu-button">Button Z</div>
</div>
似乎工作,但如果.menu-button div的数量未知,该怎么办?有更好的方法可以自动调整吗?
答案 0 :(得分:18)
要对任何元素执行此操作,您有两种解决方案:
例如,使用此HTML代码构建一个宽度相等的每个li
元素的水平菜单:
<div id="menu">
<ul>
<li><a href="#">First Element</a></li>
<li><a href="#">Second Element</a></li>
<li><a href="#">Third Element</a></li>
...
<li><a href="#">N Element</a></li>
</ul>
</div>
使用表格布局,CSS代码看起来像这样:
#menu{
width: 100%; /* for instance */
display: table;
table-layout: fixed;
}
#menu ul{
display: table-row;
}
#menu ul li{
display: table-cell;
}
灵活的盒子布局是一个更现代的解决方案,现在是pretty widely supported:
#menu{
width: 100%; /* for instance */
}
#menu ul{
display: flex;
flex-flow: row;
}
#menu ul li{
flex-grow: 1;
}
答案 1 :(得分:2)
不幸的是,我认为你必须使用表来做到这一点。当<td>
调整自身以适应整个宽度时。
HTH
答案 2 :(得分:0)
基本上,您需要制作div display:inline-block
,并将text-align:justify
应用于它们。然后强制换行。一个缺点是div之间总会有一些空间,即没有办法使它们的边缘接触。