在明确放置的行上偏移 CSS 个网格项目

Offset CSS grid items on explicitly placed rows

我正在尝试通过 CSS 网格布局实现以下目标:

A                    A
B  B  B  B  B  B  B  B
C  C     E  E  E  E  E
         D  D  D
         F  F  F

我可以在 HTML 中添加 类 但我无法重新排序元素或添加包装元素。

我几乎已经通过使用明确的 grid-row 值实现了这一点。是否可以将最后两行从第四列 开始定位,而无需为每个元素 单独明确指定 grid-column 属性? (为简洁起见,我在这里将其保留为 6,但实际布局中还有更多)

这是我目前所拥有的。如您所见,EF 的两行从第 1 列开始。

我可以将 grid-column: 4 添加到 .c13,但行中的后续元素流回第 1 列。

.grid {
  display: grid;
  grid-template-rows: repeat(5, 2em);
  grid-gap: 0.5em;
  text-align: center;
}

.c2 {
  grid-column: 8;
}

.c16 {
  grid-column: 4;
}

.extra1 {
  grid-row: 4;
}

.extra2 {
  grid-row: 5;
}

.global1 { background-color: #ccc; }
.intra1 { background-color: lightblue; }
.intra2 { background-color: yellow; }
.intra3 { background-color: purple; color: white; }
.extra1 { background-color: orange; }
.extra2 { background-color: #f66; }
<p>You need a browser that supports CSS Grid Layout for this.</p>

<section class='grid'>
  <div class='c1 global1'>A</div>
  <div class='c2 global1'>A</div>
  <div class='c3 intra1'>B</div>
  <div class='c4 intra1'>B</div>
  <div class='c5 intra1'>B</div>
  <div class='c6 intra1'>B</div>
  <div class='c7 intra1'>B</div>
  <div class='c8 intra1'>B</div>
  <div class='c9 intra1'>B</div>
  <div class='c10 intra1'>B</div>
  <div class='c11 intra2'>C</div>
  <div class='c12 intra2'>C</div>
  <div class='c13 extra1'>D</div>
  <div class='c14 extra1'>D</div>
  <div class='c15 extra1'>D</div>
  <div class='c16 intra3'>E</div>
  <div class='c17 intra3'>E</div>
  <div class='c18 intra3'>E</div>
  <div class='c19 intra3'>E</div>
  <div class='c20 intra3'>E</div>
  <div class='c21 extra2'>F</div>
  <div class='c22 extra2'>F</div>
  <div class='c23 extra2'>F</div>
</section>

您可以将 pseudo-elements 添加到 .grid 以屏蔽您不想使用的位。 CSS 网格会将 pseudo-element 视为 grid-item 并用完指定的 space。 在您的情况下,这些规则应该有效:

.grid:before{
  content:'';
  grid-column: 1 / 4;
  grid-row: 4 / -1;
}
.grid:after{
  content:'';
  grid-column: 7 / 10;
  grid-row: 4 / -1;
}

这里有一个例子供你玩:https://codepen.io/chrisboon27/pen/Lddpqa 我在文本中添加了 background-color 以便更容易看到发生了什么,但您只需删除它们即可。