- Flexbox没有崩溃的边距.
- Flexbox没有任何类似于
border-spacing
的表格(编辑:CSS property 102 fulfills this role in newer browsers, 100)
因此,要实现你所要求的就有点困难了.
根据我的经验,最"干净"的方法是在容器上设置padding:5px
,在 children 上设置margin:5px
,而不使用:first-child
/:last-child
,并且在flex-wrap:wrap
上不做任何修改.这将在每个子元素之间以及每个子元素与父母之间产生10px
个差距.
Demo
.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>