css 显示Flex -将网格项目向左推,同时保持间距[重复]

8mmmxcuj  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(92)
    • 此问题在此处已有答案**:

Targeting flex items on the last or specific row(10个答案)
5年前关闭。
我有一个使用flex的简单网格。工作正常,但我的问题是,当没有足够的元素来适应行时,它会将元素分隔到边缘。
例如,当我有一行适合每行3个项目,总共有5个项目,底部行将有两个元素在边缘,中间有一个间隙。
下面是我的代码:

.grid {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}

.grid div {
  flex-basis: 26%;
  height: 50px;
  background-color: red;
  margin-bottom: 20px;
}
<div class="grid">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

正如您所看到的,在最下面一行中有一个空白,是否有一个flex方法可以将所有内容向左推,同时保留justify-content: space-between
我可以给除第n个孩子3n以外的所有孩子都设置保证金,但我想知道是否有更好的灵活方法。

hgqdbh6s

hgqdbh6s1#

一个解决方案是添加一个伪元素,使其行为与其他元素相同,这样总共就有6个伪元素了。

.grid {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}

.grid div {
  flex-basis: 26%;
  height: 50px;
  background-color: red;
  margin-bottom: 20px;
}
.grid:after {
flex-basis: 26%;
  content:"";
}
<div class="grid">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

即使你最初有6个元素,这也不是问题,因为伪元素没有高度,所以它不会创建第三行。所以无论最后一行的元素数量是多少(1,2或3),它总是有效的:
一个二个一个一个

相关问题