我正在尝试在 flex 列中构建一个包含 2 行的网格。弹性容器具有填充窗口的最小高度。网格的第一行应该填满可用空间,所以我想到了 fr 单位。简化版本可能如下所示:
.container {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.grid {
flex-grow: 1;
background-color: red;
padding: 1rem;
grid-gap: 1rem;
display: grid;
grid-template-rows: 1fr auto;
}
.grid > * {
background-color: white;
}
<div class="container">
<h1>some title</h1>
<div class="grid">
<div>line 1</div>
<div>line 2</div>
</div>
</div>
这在 Firefox 中运行良好:
但不适用于 chrome:
我错过了什么?
答案 0 :(得分:1)
网格容器在 Chrome 和 Firefox 中以不同的方式解释 flex 父级上的 min-height: 100vh
。
正如您所指出的,在 Firefox 中一切都如您所愿。但在 Chrome 中,min-height
被有效地忽略(即使 flex-grow: 1
作用于同一个元素)。
如果您切换到 height: 100vh
,您也会在 Chrome 中看到 1fr
工作。
我必须进一步研究才能告诉您这是否是错误。
考虑将网格嵌套在另一个网格中,而不是 flex、容器。
.container {
display: grid;
min-height: 100vh;
grid-template-rows: min-content 1fr;
}
.grid {
background-color: red;
padding: 1rem;
grid-gap: 1rem;
display: grid;
grid-template-rows: 1fr auto;
}
.grid>* {
background-color: white;
}
<div class="container">
<h1>some title</h1>
<div class="grid">
<div>line 1</div>
<div>line 2</div>
</div>
</div>