使用flexbox,创建排水沟是一种痛苦,特别是当涉及到包装时。
你需要使用负边距(如问题所示):
#box {
display: flex;
width: 100px;
margin: 0 -5px;
}
... 或更改HTML(如另一个答案所示):
<div class='flex-wrapper'>
<div class='flex'>
<div class='box'></div>
<div class='box'></div>
...
</div>
</div>
... 或者别的什么。
在任何情况下,你都需要一个丑陋的黑客来让它工作,因为flexbox不提供“弹性间隙”功能
(至少现在是这样)。
水槽的问题,然而,是简单和容易的CSS网格布局。
Grid规范提供了在网格项之间创建空间的属性,而忽略项和容器之间的空间。这些属性是:
grid-column-gap
grid-row-gap
网格间隙(以上两个属性的简写)
最近,该规范已经更新,以符合CSS框对齐模块,它提供了一组用于所有框模型的对齐属性。属性现在是:
纵队间隔
row-gap
差距(简写)
然而,并不是所有支持grid的浏览器都支持更新的属性,所以我将在下面的演示中使用原始版本。
同样,如果项目和容器之间需要空格,容器上的填充就可以了(请参阅下面演示中的第三个示例)。
来自规范:
10.1. 排水沟:行隙、列隙、隙
属性
行间隙和列间隙属性(以及它们的间隙简写),
当在网格容器上指定时,定义网格之间的水槽
行和网格列。它们的语法在CSS框对齐3中定义
§8箱子之间的空隙。
这些属性的效果就像受影响的网格线一样
获取厚度:两条网格线之间的网格轨迹就是空间
在代表他们的排水沟之间。
.box {
显示:inline-grid;
grid-auto-rows: 50 px;
Grid-template-columns:重复(4,50px);
边框:1px纯黑色;
}
。{
grid-column-gap: 5 px;
}
:({
grid-column-gap: 10 px;
grid-row-gap: 10 px;
}
.three {
grid-gap: 10 px;
填充:10 px;
}
.item {
背景:浅灰色;
}
<div class='box one'>
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< / div >
<人力资源>
<div class='box two'>
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< / div >
<人力资源>
<div class='box 3 '>
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< div class = '物品' > < / div >
< / div >
更多信息:
浏览器对CSS网格的支持
更容易定义只应用于伸缩项之间的页边距(讨论)
flexbox项目之间的间距