要设置flexbox项目之间的最小距离,我使用.item
上的margy:0 5px
和Container上的margy:0-5px
。对我来说,这似乎是一个黑客,但我找不到任何更好的方法来做到这一点。
示例
null
#box {
display: flex;
width: 100px;
margin: 0 -5px;
}
.item {
background: gray;
width: 50px;
height: 50px;
margin: 0 5px;
}
<div id='box'>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
</div>
null
边框间距
的任何内容(CSS属性gap
除外,该属性在Safari、caniuse中不支持)因此,要达到你所要求的目标是比较困难的。
根据我的经验,不使用:first-child
/:last-child
并且不对flex-wrap:wrap
进行任何修改的“最干净”的方法是在容器上设置padding:5px
并在子级上设置margy:5px
。这将在每个子级之间以及每个子级与其父级之间产生10px
间隙。
演示
null
.upper
{
margin:30px;
display:flex;
flex-direction:row;
width:300px;
height:80px;
border:1px red solid;
padding:5px; /* this */
}
.upper > div
{
flex:1 1 auto;
border:1px red solid;
text-align:center;
margin:5px; /* and that, will result in a 10px gap */
}
.upper.mc /* multicol test */
{flex-direction:column;flex-wrap:wrap;width:200px;height:200px;}
<div class="upper">
<div>aaa<br/>aaa</div>
<div>aaa</div>
<div>aaa<br/>aaa</div>
<div>aaa<br/>aaa<br/>aaa</div>
<div>aaa</div>
<div>aaa</div>
</div>
<div class="upper mc">
<div>aaa<br/>aaa</div>
<div>aaa</div>
<div>aaa<br/>aaa</div>
<div>aaa<br/>aaa<br/>aaa</div>
<div>aaa</div>
<div>aaa</div>
</div>