我有以下简单的网格:
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
<ul class="grid">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
我遇到一个情况,无法编辑前端标记。我只想将网格应用于前三个项目。这可行吗?
只需使每个元素从第四列开始跨越三列。您甚至不需要定义任何模板,隐式网格将为您完成。
.grid {
display: grid;
}
.grid :nth-child(n + 4) {
grid-column:span 3;
}
<ul class="grid">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
.grid {
display: grid;
grid-template-columns: auto auto auto;
}
.grid li:nth-child(n+4) {
grid-column-start: 1;
grid-column-end: 4;
}
<ul class="grid">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
以下是一个不使用模板区域,而是重复列和行的示例,并为每个元素设置起始和停止点(grid-column
)。您会注意到,我使用了 nth-child
来针对前三个 li
,然后使用 1n+4
来针对第四个及之后的所有内容。
对于 grid-template-rows
,我将重复项设置为8,以防您的列表中有更多项目或者您的列表是动态的。
.grid {
display: grid;
grid-template-columns: repeat(3, auto);
grid-auto-rows: 1fr;
}
.grid li:nth-child(1) {
grid-column: 1/2;
}
.grid li:nth-child(2) {
grid-column: 3/4;
}
.grid li:nth-child(3) {
grid-column: 5/6;
}
.grid li:nth-child(1n+4) {
grid-column: 1/6;
}
<ul class="grid">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
grid-auto-rows:1fr
,以便为任何新创建的行定义1fr。 - Temani Afifgrid-template-rows: 1fr
也可以工作。 - disinfor
grid-template-areas
看起来非常简单。 - disinfor