使用 css 网格将未知数量的项目分成两列,但按列顺序列出

Use css Grid to divide unknow number of items into two columns, but list in column order

我有一些项目要分成偶数两列。

我有一个例子here

所以我有很多东西..

#parent {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-flow: row;
}

.item {
  margin: 5px;
  height: 40px;
  width: 50px;
  background: green;
  color: white;
}
<div id="parent">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
</div>

这给了我

但我想要的是让项目在列中“流动”,即它们将按顺序排列

 1        4
 2        5
 3        6

我认为 属性 grid-auto-flow 可以做到这一点,但我无法让它完成我想要的

有没有简单的方法可以做到这一点(最好使用 css 网格)?

它不一定是最新的布局技术;有时已经有专门为完成手头工作而创建的旧版本。

也就是说,考虑使用 columns,它可以满足您的需求,开箱即用:

#parent {
  columns: 2;
}

.item {
  break-inside: avoid;
  margin: 5px;
  height: 40px;
  width: 50px;
  background: green;
  color: white;
}
<div id="parent">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
  <div class="item">7</div>
</div>

重要旁注: 正如@Yousaf 所指出的,这可能导致单个项目被分散到两列,因为浏览器试图确保两列都是关于同样的高度。为避免这种情况,只需使用

break-inside: avoid;

列项目。