77

我有一个 CSS 网格布局,我想让一些(中间 3)行拉伸到它们的最大尺寸。我可能正在寻找flex-grow: 1与 Flexbox 类似的属性,但我似乎找不到解决方案。

注意:这仅适用于Electron应用程序,因此浏览器兼容性并不是真正的问题。

我有以下 CSS 网格布局:

.grid {
  display: grid;
  grid-template-columns: 1fr 1.5fr 1fr;
  grid-gap: 10px;
  height: calc(100vh - 10px);
}

.grid .box {
  background-color: grey;
}

.grid .box:first-child,
.grid .box:last-child {
  grid-column-start: 1;
  grid-column-end: -1;
}

/* These rows should 'grow' to the max height available. */
.grid .box:nth-child(n+5):nth-child(-n+7) {
  grid-column-start: 1;
  grid-column-end: -1;
}
<div class="grid">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>

这将创建以下网格:

当前网格




当没有一个框包含任何内容时,我希望网格看起来像这样:

首选网格

4

3 回答 3

101

其中一篇相关文章给了我(简单的)答案。

显然auto,该物业的价值grid-template-rows正是我想要的。

.grid {
    display:grid;
    grid-template-columns: 1fr 1.5fr 1fr;
    grid-template-rows: auto auto 1fr 1fr 1fr auto auto;
    grid-gap:10px;
    height: calc(100vh - 10px);
}
于 2017-01-29T01:43:26.550 回答
1

使用带有网格的重复

当盒子不包含任何内容并且如果您想摆脱空盒子空间时,您可以使用以下内容。

grid-template-rows: repeat(2, auto) repeat(3, 1fr) repeat(2, auto);

或者更紧凑的语法,因为最后两个单元格大小将默认为 auto 如果未定义:

grid-template-rows: repeat(2, auto) repeat(3, 1fr);

如果您在任何情况下都想要一些空间,则可以使用:

grid-template-rows: repeat(2, 10px) repeat(3, 1fr) repeat(2, 10px);

最后 CSS 将是

.grid {
  display: grid;
  grid-template-columns: 1fr 1.5fr 1fr;
  grid-template-rows: repeat(2, auto) repeat(3, 1fr);
  grid-gap: 10px;
  height: calc(100vh - 10px);
}
于 2022-01-05T12:44:23.947 回答
0
.periodic-table {
  display: grid;
  grid-template-columns: repeat(18, 60px);
  grid-template-rows: repeat(7, 70px) 40px repeat(2, 70px);
  grid-gap: 2px;
}

此代码将创建 18 列,每列为 60px,7 行 70px第 8 行将是 40px,然后第 9 行和第 10 行将是 70px。

于 2022-02-20T09:18:37.363 回答