使用间距和边距左对齐flexbox的最后一行

Jam*_*son 11 html css css3 flexbox

我在容器中有一个未知数量的元素,需要在外部没有边距,但它们之间的边距最小.

我还需要这些是合理的,space-between最后一行左对齐.

我试图用flexbox这样做:

.outside {
  border: 1px solid black;
}
.container {
  margin: -5px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.container:after {
  content: '';
  flex: auto;
}
.box {
  background: red;
  width: 50px;
  height: 50px;
  margin: 5px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="outside">
  <div class="container">
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <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)

查看JSFiddle

这可以正常工作,但最后一行的间距是关闭的,如屏幕截图所示:

在此输入图像描述

如果我们不知道会有多少列(使用flexbox或javascript之外的其他内容),有没有办法让它工作?

Mic*_*l_B 5

最后一行对齐是flexbox的常见问题。

要考虑的一种方法是在最后一个可见项目之后使用不可见的伸缩项目。简而言之,我只称它们为“幻影道具”。

.outside {
  border: 1px solid black;
}
.container {
  margin: -5px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.container:after {
  content: '';
  flex: auto;
}
.box {
  background: red;
  width: 50px;
  height: 50px;
  margin: 5px;
}

.hidden {
  visibility: hidden;
  margin: 0 5px;
  height: 0;
}
Run Code Online (Sandbox Code Playgroud)
<div class="outside">
  <div class="container">
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
    <div class="box hidden"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 这只有在我们知道连续有多少个时才有效(我注意到我发布了错误的链接,它不应该在小提琴中具有 500 像素的宽度,我现在已经更新了)。 (3认同)
  • 它太脏了,但是可以用,我找不到更好的方法。所以+1 :) (2认同)