如何在CSS网格布局中指定行高?

时间:2017-01-29 01:25:55

标签: html css grid-layout css-grid

我有一个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>
&#13;
&#13;
&#13;

创建以下网格:

Current Grid




如果没有任何框包含任何内容,我希望网格看起来像这样:

Preferred Grid

1 个答案:

答案 0 :(得分:30)

其中一个Related posts给了我(简单)答案。

显然,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);
}