从下到上而不是从上到下填充 CSS 网格

Filling a CSS Grid from bottom up instead of top down

我需要一种方法让我的 CSS 网格中的元素向上堆叠而不是自上而下。

这是我目前的情况:

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  width: 306px;
  border: 1px solid black;
}

.gridItem {
  width: 100px;
  height: 100px;
  border: 1px solid orange;
}
<div class="grid">
  <div class="gridItem">1</div>
  <div class="gridItem">2</div>
  <div class="gridItem">3</div>
  <div class="gridItem">4</div>
  <div class="gridItem">5</div>
  <div class="gridItem">6</div>
  <div class="gridItem">7</div>
</div>

如果您知道 div 的确切数量,您可以尝试使用网格区域:

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  width: 306px;
  border: 1px solid black;
}

.gridItem {
  width: 100px;
  height: 100px;
  border: 1px solid orange;
}
.div1 { grid-area: 3 / 1 / 4 / 2; }
.div2 { grid-area: 3 / 2 / 4 / 3; }
.div3 { grid-area: 3 / 3 / 4 / 4; }
.div4 { grid-area: 2 / 1 / 3 / 2; }
.div5 { grid-area: 2 / 2 / 3 / 3; }
.div6 { grid-area: 2 / 3 / 3 / 4; }
.div7 { grid-area: 1 / 1 / 2 / 2; } 
<div class="grid">
  <div class="gridItem div1">1</div>
  <div class="gridItem div2">2</div>
  <div class="gridItem div3">3</div>
  <div class="gridItem div4">4</div>
  <div class="gridItem div5">5</div>
  <div class="gridItem div6">6</div>
  <div class="gridItem div7">7</div>
</div>

使用弹性框:

.grid {
  display: flex;
  flex-flow: wrap-reverse; /* this will do the magic */
  width: 300px;
  border: 1px solid black;
  box-sizing:border-box;
}

.gridItem {
  width:calc(100%/3);
  height: 100px;
  box-sizing:border-box;
  border: 1px solid orange;
}
<div class="grid">
  <div class="gridItem">1</div>
  <div class="gridItem">2</div>
  <div class="gridItem">3</div>
  <div class="gridItem">4</div>
  <div class="gridItem">5</div>
  <div class="gridItem">6</div>
  <div class="gridItem">7</div>
</div>