【发布时间】:2017-07-03 13:07:56
【问题描述】:
随着 CSS 网格布局模块即将在 Firefox 和 Chrome 中发布,我想我会尝试掌握如何使用它。
我尝试创建一个简单的网格,其中一个项目 a 跨越所有行的左侧,其他项目(b、c、d、e 等.) 跨越各个行的右侧。跨越行右侧的项目数量是可变的,因此可能有b、c、d、e 等的任意组合,所以我使用的是grid-auto-rows 属性.因此,我无法为 a 定义固定数量的跨行,但我希望 a 跨所有个可用行。
#container {
display: grid;
grid-auto-flow: column;
grid-auto-rows: auto;
grid-template-columns: [left] 4rem [right] 1fr;
margin: 0rem auto;
max-width: 32rem;
}
#a {
background: lightgreen;
grid-column: left;
grid-row: 1 / auto;
justify-self: center;
}
#b {
grid-area: auto / right;
background: yellow;
}
#c {
grid-area: auto / right;
background: pink;
}
#d {
grid-area: auto / right;
background: lightskyblue;
}
#e {
background: plum;
grid-area: auto / right;
}
<div id="container">
<div id="a">a</div>
<div id="b">b</div>
<div id="c">c</div>
<div id="d">d</div>
<div id="e">e</div>
</div>
我应该怎么做才能让a 跨越所有行而不知道最终会有多少行?
【问题讨论】:
-
我也在研究 CSS Grid,我也遇到了同样的问题。我觉得我缺少一些简单的东西。
-
我会在有时间的时候将其写成完整的答案,但关键是网格内的网格。因此,在“a”旁边创建另一个 div,其中包含 b、c、d、e 和所有其他内容 - 我们称之为“content_holder”。然后添加显示:网格;到'content_holder'。它会根据内容自动调整大小,'a' 会根据内容自动调整大小。
-
我遇到了同样的问题。可能 grid-row: 1 / -1 应该这样做,但它显然不适用于自动行:(