如何在 CSS 网格布局中指定行高?
How do I specify row heights in CSS Grid layout?
我有一个 CSS 网格布局,我想在其中使 一些 (中间 3)行拉伸到最大尺寸。我可能正在寻找与 flex-grow: 1
对 Flexbox 所做的类似的 属性,但我似乎找不到解决方案。
Note: This is intended for an Electron app only, so browser compatibility is not really a concern.
我有以下 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>
创建以下网格:
当 none 个框包含任何内容时,我希望网格看起来像这样:
其中一位 Related posts 给了我(简单的)答案。
显然 grid-template-rows
属性 上的 auto
值正是我想要的。
.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);
}
使用网格重复
当盒子不包含任何内容并且如果你想摆脱空盒子 spaces 以及你可以使用以下内容。
grid-template-rows: repeat(2, auto) repeat(3, 1fr) repeat(2, auto);
或更紧凑的语法,如果未定义,最后两个单元格大小默认为自动:
grid-template-rows: repeat(2, auto) repeat(3, 1fr);
如果你想要一些 space 无论如何你可以使用:
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);
}
.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。
我有一个 CSS 网格布局,我想在其中使 一些 (中间 3)行拉伸到最大尺寸。我可能正在寻找与 flex-grow: 1
对 Flexbox 所做的类似的 属性,但我似乎找不到解决方案。
Note: This is intended for an Electron app only, so browser compatibility is not really a concern.
我有以下 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>
创建以下网格:
当 none 个框包含任何内容时,我希望网格看起来像这样:
其中一位 Related posts 给了我(简单的)答案。
显然 grid-template-rows
属性 上的 auto
值正是我想要的。
.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);
}
使用网格重复
当盒子不包含任何内容并且如果你想摆脱空盒子 spaces 以及你可以使用以下内容。
grid-template-rows: repeat(2, auto) repeat(3, 1fr) repeat(2, auto);
或更紧凑的语法,如果未定义,最后两个单元格大小默认为自动:
grid-template-rows: repeat(2, auto) repeat(3, 1fr);
如果你想要一些 space 无论如何你可以使用:
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);
}
.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。