【发布时间】:2018-02-02 20:24:15
【问题描述】:
grid 属性是否与 flex-grow 类似?
我希望我的网格区域能够容纳他们收到的内容,但有些区域比其他区域占据更多的位置,例如 flex-grow for flex。
实际上,在下面的示例中,我想要
-
turquoise不可见,因为它容纳了它的内容。 -
footer也是不可见的,因为它没有内容。 - 中间部分取页面的其余部分,如
flex-grow。
更实际地,我想要这段代码:
.ctnr {
display: grid;
min-height: 100vh;
grid-template-areas:
"header header"
"nav main"
"footer footer";
}
.test {
background: black;
height: 1rem;
}
header {
grid-area: header;
background: turquoise;
}
nav {
grid-area: nav;
background: grey;
}
main {
grid-area: main;
}
footer {
grid-area: footer;
background: yellow
}
<div class="ctnr">
<header>
<div class="test"></div>
</header>
<nav></nav>
<main></main>
<footer></footer>
</div>
像这样的代码:
.ctnr {
display: flex;
flex-direction: column;
height: 100vh;
}
.panel {
flex-grow: 1;
display: flex;
}
header {
flex-grow: 0;
background: turquoise;
}
nav {
min-width: 10rem;
background: grey
}
footer {
background: yellow
}
<div class="ctnr">
<header>hey</header>
<div class="panel">
<nav></nav>
<main></main>
</div>
<footer></footer>
</div>
没有 div.panel 并且没有添加任何额外的标签。
我想这样做的原因是正当的,额外的div 元素让我很烦。
【问题讨论】: