这个问题在这里已有答案:
我的目标是让项目填充父项的整个宽度。如果这是静态的,我可以像width:%
一样使用width:33%
3项。问题是项目数量会发生变化
#container {
background-color:red;
}
.item {
background-color:yellow;
display:inline-block;
}
<div id="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<!-- here new items will be added -->
</div>
您可以使用flexbox使用以下解决方案。您可以在不更改CSS的情况下在HTML上添加更多元素:
#container {
display:flex;
flex-direction:row;
justify-content:space-evenly;
}
.item {
border:1px dashed red;
width:100%;
}
<div id="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
</div>
<div id="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
<div id="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
</div>
这项任务可以通过以下几种方式完成:Flexbox
,quantity queries
和display: table
。我建议无论如何使用第一种方法,除非你需要支持IE<10
标记
<div id="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<!-- here new items will be added -->
</div>
CSS
#container {
display: flex;
}
#container > div {
flex: 1;
}
这样做所有内部元素将始终采用均匀分布的相同空间。
另一种选择是浮动元素并使用quantity queries,如果你有有限数量的内部元素,例如
标记
<div id="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
CSS
#container > div:nth-last-child(5):first-child,
#container > div:nth-last-child(5):first-child ~ div {
width: 20%;
float: left;
}
当然,这种方法需要在CSS中设置可能出现在容器内的每个可能数量的内部div的样式,并且还需要在父容器上进行一些浮动清除。它的可持续性较低,但也值得一提。
最后,最后一个例子利用了display: table
和table-cell
这里的风格很简单
#container {
display: table;
width: 100%;
}
.item {
display: table-cell;
}