在CSS Grid中为网格间隙设置不同的长度

Ste*_*sen 13 css css3 css-grid

我正在使用CSS网格创建一个布局,我希望每行之间有不同的空间.

我可以通过在每个元素上使用margin来创建布局,但这种模糊了代码的简单性.有没有我可以做到的网格技巧,grid-row-gap只看到一个值,它用于所有行.

我想要实现的是这样的布局:

https://jsfiddle.net/8swzgk0b/1/

.grid {
  display: grid;
  grid-template-columns: auto 25% 25%;
  grid-template-rows: auto auto auto;
  width 100%;
  margin: 20px;
  grid-column-gap: 40px;
  /* grid-row-gap: 40px 60px; */
}

div {
  background: #838383;
  height: 80px;
}

.wide {
  grid-column: 1 / span 3;
  margin-bottom: 5px;
}

.row-2 {
  background: green;
  margin-bottom: 10px;
}

.row-3 {
  background: blue;
  margin-bottom: 30px;
}

.row-4 {
  background: red;
  margin-bottom: 20px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="grid">
  <div class="wide"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

Mic*_*l_B 15

有没有我可以做的网格技巧来实现这一点,grid-row-gap似乎只采用一个值,它用于所有行.

随着grid-row-gap,grid-column-gapgrid-gap性能,你不能在不同的宽度不同的GAP适用.如您所述,每个轴只能使用一个值:一个用于行间隙,另一个用于列间隙(spec).

您可以使用边距(或填充)来显示额外的空间,但这实际上并不会改变间隙的宽度.它只扩展了行.

在下面的示例中(基于您的代码),grid-row-gap设置为20px.网格项目具有margin-bottom您设置的变体.注意grip-row-gap大小永远不会改变.所有更改都发生在行内.

在此输入图像描述

.grid {
  display: grid;
  grid-template-columns: auto 25% 25%;
  grid-template-rows: auto auto auto;
  grid-column-gap: 40px;
  grid-row-gap: 20px;
}

div {
  background: #838383;
  height: 80px;
}

.wide {
  grid-column: 1 / span 3;
  margin-bottom: 5px;
}

.row-2 {
  background: green;
  margin-bottom: 10px;
}

.row-3 {
  background: blue;
  margin-bottom: 30px;
}

.row-4 {
  background: red;
  margin-bottom: 20px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="grid">
  <div class="wide"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果要在行之间应用不同大小的间隙,请考虑使用作业的实际行:

在此输入图像描述

现在行之间的间隙有其独特的高度.

.grid {
  display: grid;
  grid-template-columns: auto 25% 25%;
  grid-template-rows: 80px 5px 80px 10px 80px 30px 80px 20px; /* adjusted */
  grid-column-gap: 40px;
}

.wide {
  grid-column: 1 / span 3;
  background: #838383;
}

.row-2 {
  grid-row-start: 3;
  background: green;
}

.row-3 {
  grid-row-start: 5;
  background: blue;
}

.row-4 {
  grid-row-start: 7;
  background: red;
}
Run Code Online (Sandbox Code Playgroud)
<div class="grid">
  <div class="wide"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 不错,我确实认为使用保证金在美学上更具吸引力。不幸的是,您不能为grid-row-gap指定乘法值:/ (2认同)