设置flexbox项目之间距离的更好方法

Sas*_*oss 653 css css3 flexbox

设置我在容器margin: 0 5px.itemmargin: 0 -5px容器上使用的flexbox项目之间的最小距离.对我来说,这似乎是一个黑客,但我找不到更好的方法来做到这一点.

#box {
  display: flex;
  width: 100px;
  margin: 0 -5px;
}
.item {
  background: gray;
  width: 50px;
  height: 50px;
  margin: 0 5px;
}
Run Code Online (Sandbox Code Playgroud)
<div id='box'>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
</div>
Run Code Online (Sandbox Code Playgroud)

小智 354

  • Flexbox没有折叠边距.
  • Flexbox没有类似于border-spacing表格的东西.

因此,实现您所要求的要求有点困难.

根据我的经验,不使用gap/ :first-child并且无需任何修改即可工作的"最干净"方式:last-child是设置flex-wrap:wrap容器和padding:5px子容器.这将margin:5px在每个孩子之间以及每个孩子和他们的父母之间产生差距.

演示

.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;}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

  • 这并没有完成与问题相同的问题,你将在最左边和右边有一个10px缩进,我假设他们不打算拥有.因此,原始问题的负边缘. (177认同)
  • 如果`order`属性设置怎么样?`:first-child /:last-child`将无法按预期工作. (15认同)
  • @chharvey,来自规范https://www.w3.org/TR/css-flexbox-1/#item-margins,"相邻弹性项目的边距不会崩溃." (7认同)
  • 这不是比原始问题更糟糕的答案吗?此方法要求您在容器周围留出空间,并且排水沟必须始终为偶数。 (5认同)
  • "Flexbox没有崩溃的边缘."非常有见地,显然是真的,但我可以要求引用吗? (4认同)
  • 调整内容:周围空间 (2认同)
  • @Tin是的,如果*周围有*空间来分发.这意味着您获得的最小边距宽度为零.CSS很乱. (2认同)
  • gap 属性的 CSS 规范也被提升为与 flex 一起使用。请参阅:https://caniuse.com/#feat=flexbox-gap (2认同)
  • @Flimm 的答案是有效的。您只需调整内边距和边距即可获得所需的 5px 间距,例如“padding: 5px 0 0 5px;”和“margin: 0 5px 5px 0;”。请参阅此处:https://jsfiddle.net/sandraqu/na32wbyu/ (2认同)

Rou*_*rge 177

这不是一个黑客.引导程序及其网格也使用相同的技术,但是,引导程序使用填充作为其cols而不是margin.

.row {
  margin:0 -15px;
}
.col-xx-xx {
  padding:0 15px;
}
Run Code Online (Sandbox Code Playgroud)

  • 这种方法还有另一个问题:像这样调整边距可以扩展页面宽度.演示:https://jsfiddle.net/a97tatf6/1/ (17认同)
  • 这种方法的唯一问题是保持具有背景颜色的相同高度的项目。`height:100% 的绝对定位;width:100%` 忽略项目的填充。 (3认同)
  • 这里的问题是IE10和11.`flex-basis`值不考虑`box-sizing:border-box`,所以带有任何填充或边框的子将溢出父(或在这种情况下换行).[来源](https://github.com/philipwalton/flexbugs#7-flex-basis-doesnt-account-for-box-sizingborder-box) (3认同)
  • 当然这是黑客。因为Bootstrap使用此方法*并非*表示这不是黑客。这仅表示Bootstrap使用了hack。 (3认同)
  • 尽管我同意这不是hack,但某些东西被广泛使用的事实并不意味着它不是hack。查看polyfill,临时安全补丁,十六进制编辑等 (2认同)

Fli*_*imm 152

CSSgap属性:

现在有一个适用于多列、弹性框和网格布局的新gapCSS 属性,可在较新的浏览器中使用!(请参阅我可以使用链接 1吗;链接 2)。它是row-gapand 的简写column-gap

#box {
  display: flex;
  flex-wrap: wrap;
  width: 200px;
  background-color: red;
  gap: 10px;
}
.item {
  background: gray;
  width: 50px;
  height: 50px;
  border: 1px black solid;
}
Run Code Online (Sandbox Code Playgroud)
<div id='box'>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSSrow-gap属性:

flexbox 和 grid 布局的row-gapCSS 属性允许您在行之间创建间隙。

#box {
   display: flex;
   row-gap: 10px;
}
Run Code Online (Sandbox Code Playgroud)

CSScolumn-gap属性:

多列、弹性框和网格布局的column-gapCSS 属性允许您在列之间创建间隙。

#box {
  display: flex;
  column-gap: 10px;
}
Run Code Online (Sandbox Code Playgroud)

  • @MarcoPanichi 您看到的结果是预期的结果。请注意每行中第一个项目之前没有红色边距。如果你不想换行,可以将其关闭:`flex-wrap: nowrap`。您可能还想尝试:`justify-content: space- Between` (3认同)
  • 它不适用于我的 Windows 10 + Chrome 90.0.4430。它的作用类似于边距,第四个元素换行。请检查我显示器上您自己的代码片段的屏幕截图 https://i2.paste.pics/a1f42d884cb5a64ddf80632e87178869.png (2认同)

Dar*_*ski 90

flexbox和css calc()

您好,以下是我支持flexbox的所有浏览器的工作解决方案.没有负利润,没有黑客,没有变通方法,纯粹的Css.

小提琴演示

   
.flexbox {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-between;
}

.flexbox > div {
  /*
    1/3  - 3 columns per row
    10px - spacing between columns 
  */
  box-sizing: border-box;
  margin-bottom: 10px;
  outline: 1px dotted red;
  width: calc(1/3*100% - (1 - 1/3)*10px);
}
Run Code Online (Sandbox Code Playgroud)
<div class="flexbox">
  <div>col</div>
  <div>col</div>
  <div>col</div>
  <div>col</div>
  <div>col</div>
  <div>col</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个解决方案,但如果最后一行只有2个项目,它就会失败.由于"对齐内容",这些项目没有堆叠在一起. (13认同)
  • @PaulRooney如果列表是由CMS生成的,则在具有多个列表的站点上,您可能并不总是知道项目的数量。 (6认同)
  • 解决这两个问题只需改为`justify-content:space-uniformity;`或`justify-content:space-around;`. (4认同)
  • @TylerH 这不是任意的。问题问如何“...设置弹性盒项目之间的距离”。这个答案没有显示排水沟的大小。设置背景颜色显示装订线。添加边框显示最后一行下方有边距。 (2认同)

hex*_*lys 89

您可以使用透明边框.

我在尝试构建一个可以回退到旧版浏览器的表+表格单元模型的弹性网格模型时考虑过这个问题.在我认为最好的选择是对于栏目排水沟的边界.即表格单元格没有边距.

例如

.column{
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 10px solid transparent;
}
Run Code Online (Sandbox Code Playgroud)

另请注意,您需要min-width: 50px;flexbox.flex模型不会处理固定大小,除非您flex: none;对特定的子元素执行固定操作,因此将其排除在外"flexi".http://jsfiddle.net/GLpUp/4/ 但是所有列flex:none;都不再是flex模型.这是一个更接近flex模型的东西:http://jsfiddle.net/GLpUp/5/

因此,如果您不需要旧版浏览器的表格单元回退,您通常可以正常使用边距.http://jsfiddle.net/GLpUp/3/

background-clip: padding-box;使用背景时需要进行设置,否则背景将流入透明边框区域.

  • @ahnbizcad:如果你不需要IE8支持,这是一个更好的解决方案:`background-clip:padding-box` (26认同)
  • 很好的答案.在flexbox中使用不同的边距(比如吸收额外的空间),因此透明边框为均匀间隔的元素提供了一个出色的解决方案,可以用类似边缘的行为进行包装 (5认同)
  • 除非使用背景颜色,否则背景会超出所需的范围. (4认同)
  • 阿尔宾在这里的评论需要更多的选票!这是最好的解决方案.透明边框,与背景剪辑相结合:填充框(如果需要,容器上的负边距,以实现正确的边缘对齐)是一个完美的解决方案.IE8无论如何都不支持flexbox,所以它缺乏对background-clip的支持应该不重要. (4认同)
  • @ahnbizcad使用不同的背景颜色,您可以使用白色或适当的颜色,具体取决于背景的方式. (2认同)

weB*_*Ber 64

这适用于所有情况,即使我们有多行或任意数量的元素.

我们正在使用display: grid;它的属性.

#box {
  display: grid;
  width: 100px;
  grid-gap: 5px;
  /* Space between items */
  grid-template-columns: 1fr 1fr 1fr 1fr;
  /* Decide the number of columns and size */
}

.item {
  background: gray;
  width: 100%;
  /* width is not necessary only added this to understand that width works as 100% to the grid template allocated space **DEFAULT WIDTH WILL BE 100%** */
  height: 50px;
}
Run Code Online (Sandbox Code Playgroud)
<div id='box'>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
</div>
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是在Mobile Opera Mini中不受支持,而在PC中这只适用于IE11之后.


老答复

如果你想要你总是可以使用CSS兄弟组合:

.item+.item{
  margin-left: 5px;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码可以解决问题.在这种方法中,没有必要给margin: 0 -5px;#box包装.

适合您的工作样本:

#box {
  display: flex;
  width: 100px;
}
.item {
  background: gray;
  width: 22px;
  height: 50px;
}
.item+.item{
 margin-left: 5px;
}
Run Code Online (Sandbox Code Playgroud)
<div id='box'>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
</div>
Run Code Online (Sandbox Code Playgroud)


Do *_*ync 42

您可以使用& > * + *selector来模拟flex-gap(对于单行):

#box { display: flex; width: 230px; outline: 1px solid blue; }
.item { background: gray; width: 50px; height: 100px; }

/* ----- Flexbox gap: ----- */

#box > * + * {
  margin-left: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<div id='box'>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果需要支持flex包装,可以使用包装元素:

.flex { display: flex; flex-wrap: wrap;  }
.box { background: gray; height: 100px; min-width: 100px; flex: auto; }
.flex-wrapper {outline: 1px solid red; }

/* ----- Flex gap 10px: ----- */

.flex > * {
  margin: 5px;
}
.flex {
  margin: -5px;
}
.flex-wrapper {
  width: 400px; /* optional */
  overflow: hidden; /* optional */
}
Run Code Online (Sandbox Code Playgroud)
<div class='flex-wrapper'>
  <div class='flex'>
    <div class='box'></div>
    <div class='box'></div>
    <div class='box'></div>
    <div class='box'></div>
    <div class='box'></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 清洁溶液。适用于任意数量的 Flex 子元素。 (11认同)

Sti*_*ers 23

假设您想10px在项目之间设置空间,您可以设置.item {margin-right:10px;}所有项目,并在最后一项上重置它.item:last-child {margin-right:0;}

您还可以使用普通兄弟~或下一个+兄弟选择器在不包括第一个.item ~ .item {margin-left:10px;}或使用的项目上设置左边距.item:not(:last-child) {margin-right: 10px;}

Flexbox非常聪明,可以自动重新计算并均匀分配网格.

body {
  margin: 0;
}

.container {
  display: flex;
}

.item {
  flex: 1;
  background: gray;
  height: 50px;
}

.item:not(:last-child) {
  margin-right: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果要允许flex包装,请参阅以下示例.

body {
  margin: 0;
}

.container {
  display: flex;
  flex-wrap: wrap;
  margin-left: -10px;
}

.item {
  flex: 0 0 calc(50% - 10px);
  background: gray;
  height: 50px;
  margin: 0 0 10px 10px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 如果项目被包装,这将不起作用,因为`:last-child`不会影响一行末尾的每个最后一个孩子,对吗? (6认同)
  • @Flimm我添加了一种使用flex wrap的方法,请参见上面的第二部分。 (2认同)

Sim*_*amp 17

我找到了一个基于css ~选择器的解决方案~,并允许嵌入式嵌套.

有关工作示例,请参阅此代码笔

基本上,在列容器内部,每个前面有另一个孩子的孩子都有一个上边距.同样,在每个行容器中,每个前面有另一个子项的子项都会获得左边距.

.box {
  display: flex;
  flex-grow: 1;
  flex-shrink: 1;
}

.box.columns {
  flex-direction: row;
}

.box.columns>.box~.box {
  margin-left: 5px;
}

.box.rows {
  flex-direction: column;
}

.box.rows>.box~.box {
  margin-top: 5px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="box columns">
  <div class="box" style="background-color: red;"></div>
  <div class="box rows">
    <div class="box rows">
      <div class="box" style="background-color: blue;"></div>
      <div class="box" style="background-color: orange;"></div>
      <div class="box columns">
        <div class="box" style="background-color: yellow;"></div>
        <div class="box" style="background-color: pink;"></div>
      </div>
    </div>
    <div class="box" style="background-color: green;"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)


Eli*_*hen 17

根据#ChromeDevSummitgap说法,在Firefox 和基于 Chromium 的浏览器中实现了 Flexbox 属性。

这是一个现场演示


chr*_*ris 14

继续sawa的回答,这是一个稍微改进的版本,允许您在没有周围边距的项目之间设置固定的间距.

http://jsfiddle.net/chris00/s52wmgtq/49/

还包括Safari"-webkit-flex"版本.

.outer1 {
    background-color: orange;
    padding: 10px;
}

.outer0 {
    background-color: green;
    overflow: hidden;
}

.container
{
    display: flex;
    display: -webkit-flex;
    flex-wrap: wrap;    
    -webkit-flex-wrap: wrap;
    background-color: rgba(0, 0, 255, 0.5);
    margin-left: -10px;
    margin-top: -10px;
}

.item
{
    flex-grow: 1;
    -webkit-flex-grow: 1;
    background-color: rgba(255, 0, 0, 0.5);
    width: 100px;
    padding: 10px;
    margin-left: 10px;
    margin-top: 10px;
    text-align: center;
    color: white;
}

<div class="outer1">
    <div class="outer0">
        <div class="container">
            <div class="item">text</div>
            <div class="item">text</div>
            <div class="item">text</div>
            <div class="item">text</div>
            <div class="item">text</div>
            <div class="item">text</div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 这与问题中给出的示例基本不相同吗? (2认同)

Vei*_*ger 9

我已经将它用于包裹和固定宽度的列.这里的关键是calc()

SCSS样本

$gap: 10px;

dl {
  display: flex;
  flex-wrap: wrap;
  padding: $gap/2;

  dt, dd {
    margin: $gap/2;}

  dt { // full width, acts as header
    flex: 0 0 calc(100% - #{$gap});}

  dd { // default grid: four columns 
    flex: 0 0 calc(25% - #{$gap});}

  .half { // hall width columns
    flex: 0 0 calc(50% - #{$gap});}

}
Run Code Online (Sandbox Code Playgroud)

完整的Codepen示例

  • 这仍会在第一个项目之前和最后一个项目之后添加装订线,这将防止OP使用负边距。 (2认同)
  • Flexbox不支持IE 11中"flex"项目中的calc(). (2认同)

Tim*_*Tim 9

柔性容器-x(负)余量柔性物品X(正)余量填充既导致所希望的视觉效果:弹性件具有2X的固定间隙仅之间彼此.

这似乎只是一个偏好问题,无论是在flex项目上使用边距还是填充.

在此示例中,将动态缩放弹性项目以保留固定间隙:

.flex-container { 
  margin: 0 -5px;
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
}

.flex-item {
  margin: 0 5px; // Alternatively: padding: 0 5px;
  flex: 1 0 auto;
}
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,我没收到。您的答案引入了什么新问题,而问题又没有直接说出来? (2认同)

小智 8

最终他们会将gap属性添加到flexbox.在那之前你可以使用CSS网格代替已经拥有该gap属性的CSS网格,并且只有一行.比处理利润更好.


小智 7

在我的解决方案中使用 Flexbox 我已经使用了justify-content父元素(容器)的属性,并且我已经flex-basis在项目的属性中指定了边距。检查下面的代码片段:

.container {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-around;
  margin-bottom: 10px;
}

.item {
  height: 50px;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #999;
}

.item-1-4 {
  flex-basis: calc(25% - 10px);
}

.item-1-3 {
  flex-basis: calc(33.33333% - 10px);
}

.item-1-2 {
  flex-basis: calc(50% - 10px);
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="item item-1-4">1</div>
  <div class="item item-1-4">2</div>
  <div class="item item-1-4">3</div>
  <div class="item item-1-4">4</div>
</div>
<div class="container">
  <div class="item item-1-3">1</div>
  <div class="item item-1-3">2</div>
  <div class="item item-1-3">3</div>
</div>
<div class="container">
  <div class="item item-1-2">1</div>
  <div class="item item-1-2">2</div>
</div>
Run Code Online (Sandbox Code Playgroud)


And*_*aul 6

您可以使用新财产gap我复制粘贴我在本文中找到的解释以及更多信息

CSS 网格布局存在间隙(以前称为 grid-gap)已经有一段时间了。通过指定包含元素的内部间距而不是子元素周围的间距,gap 解决了许多常见的布局问题。例如,使用间隙,您不必担心子元素的边距会导致包含元素的边缘周围出现不需要的空白:

不幸的是,目前只有 FireFox 支持弹性布局中的间隙。

@use postcss-preset-env {
  stage: 0;
  browsers: last 2 versions
}

section {
  width: 30vw;
  
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(12ch, 1fr));
  
  &[flex] {
    display: flex;
    flex-wrap: wrap;
  }
  
  margin-bottom: 3rem;
}

.tag {
  color: white;
  background: hsl(265 100% 47%);
  padding: .5rem 1rem;
  border-radius: 1rem;
}

button {
  display: inline-flex;
  place-items: center;
  gap: .5rem;
  background: hsl(265 100% 47%);
  border: 1px solid hsl(265 100% 67%);
  color: white;
  padding: 1rem 2rem;
  border-radius: 1rem;
  font-size: 1.25rem;
}

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
Run Code Online (Sandbox Code Playgroud)
<section>
  <h1>Grid</h1> 
  <div class="tag">Awesome</div>
  <div class="tag">Coo</div>
  <div class="tag">Rad</div>
  <div class="tag">Math</div>
</section>
<br>
<section flex>
  <h1>Flex</h1>
  <div class="tag">Awesome</div>
  <div class="tag">Coo</div>
  <div class="tag">Rad</div>
  <div class="tag">Math</div>
</section>
Run Code Online (Sandbox Code Playgroud)


til*_*ers 5

为什么不这样做:

.item + .item {
    margin-left: 5px;
}
Run Code Online (Sandbox Code Playgroud)

这使用相邻的兄弟选择器,给出所有.item元素,除了第一个 a margin-left。多亏了 flexbox,这甚至会产生同样宽的元素。这也可以通过垂直定位的元素来完成margin-top,当然。

  • 只要弹性项目总是在一行中,这就会起作用。如果允许包装,那么它可能还不够。 (8认同)

MK1*_*K10 5

这是我的解决方案,不需要在子元素上设置任何类:

.flex-inline-row {
    display: inline-flex;
    flex-direction: row;
}

.flex-inline-row.flex-spacing-4px > :not(:last-child) {
    margin-right: 4px;
}
Run Code Online (Sandbox Code Playgroud)

用法:

<div class="flex-inline-row flex-spacing-4px">
  <span>Testing</span>
  <span>123</span>
</div>
Run Code Online (Sandbox Code Playgroud)

除了上面给出的内联示例之外,相同的技术还可用于普通的 flex 行和列,并扩展为 4px 以外的间距类。


Mic*_*l_B 5

使用flexbox时,创建装订线很麻烦,尤其是在涉及包装时。

您需要使用负边距(如问题所示):

#box {
  display: flex;
  width: 100px;
  margin: 0 -5px;
}
Run Code Online (Sandbox Code Playgroud)

...或更改HTML(如另一个答案所示):

<div class='flex-wrapper'>
  <div class='flex'>
    <div class='box'></div>
    <div class='box'></div>
            ...
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

... 或者是其他东西。

无论如何,您都需要一个难看的技巧来使其工作,因为flexbox不提供“ flex-gap”功能(至少目前是这样)。

但是,使用CSS Grid Layout可以轻松解决装订线问题。

网格规格提供的属性可在网格项目之间创建空间,而忽略项目与容器之间的空间。这些属性是:

  • grid-column-gap
  • grid-row-gap
  • grid-gap (以上两个属性的简写)

最近,对规范进行了更新以符合CSS Box Alignment Module的要求,该模块提供了一组可在所有Box型号中使用的对齐属性。因此,属性现在为:

  • column-gap
  • row-gap
  • gap (速记)

但是,并非所有支持Grid的浏览器都支持较新的属性,因此我将在下面的演示中使用原始版本。

另外,如果需要在物品和容器之间padding留出一定的间距,那么在容器上的工作就很好了(请参见下面演示中的第三个示例)。

从规格:

10.1。排水沟:对row-gapcolumn-gapgap 性质

row-gapcolumn-gap特性(以及它们的gap速记)中,当在网格容器指定,定义网格的行和网格列之间的水槽。它们的语法在CSS框对齐3§8框之间的间隙中定义。

这些属性的影响就好像受影响的网格线获得了厚度:两条网格线之间的网格轨迹是代表它们的排水沟之间的空间。

#box {
  display: flex;
  width: 100px;
  margin: 0 -5px;
}
Run Code Online (Sandbox Code Playgroud)
<div class='flex-wrapper'>
  <div class='flex'>
    <div class='box'></div>
    <div class='box'></div>
            ...
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

更多信息:


wut*_*aer 5

我经常在这种情况下使用 + 运算符

#box {
  display: flex;
  width: 100px;
}
.item {
  background: gray;
  width: 50px;
  height: 50px;
}
.item + .item {
    margin-left: 5px;
}
Run Code Online (Sandbox Code Playgroud)
<div id='box'>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
</div>
Run Code Online (Sandbox Code Playgroud)