gpt4 book ai didi

CSS Grid - 可重复的网格模板区域

转载 作者:行者123 更新时间:2023-12-04 19:29:05 25 4
gpt4 key购买 nike

假设我们有一个包含 7 个元素的新闻条目列表。

我用 CSS Grid 创建了一个模式,它应该在 6 个元素后重复。

@supports (display: grid)
{
.list
{
display: grid;
grid-gap: 25px;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: auto;
grid-template-areas:
"bigLeft bigLeft right1 right2"
"bigLeft bigLeft bigRight bigRight"
"left1 left2 bigRight bigRight";
}

.item:nth-of-type(6n+1)
{
grid-area: bigLeft;
}
.item:nth-of-type(6n+2)
{
grid-area: right1;
}
.item:nth-of-type(6n+3)
{
grid-area: right2;
}
.item:nth-of-type(6n+4)
{
grid-area: left1;
}
.item:nth-of-type(6n+5)
{
grid-area: left2;
}
.item:nth-of-type(6n+6)
{
grid-area: bigRight;
}
}

所需的 grid-template-areas 模式:

现在我希望这种模式重复并重复添加到列表中的更多元素。
但是 HERE 您可以看到,一旦添加了第 7 个元素,该模式将不会继续而是被替换。

我也试过这个没有命名的区域
.item:nth-of-type(6n+1) {
grid-column: 1 / 3;
grid-row: 1 / 3;
}
.item:nth-of-type(6n+2) {
grid-column: 3 / 4;
grid-row: 1 / 2;
}
.item:nth-of-type(6n+3) {
grid-column: 4 / 5;
grid-row: 1 / 2;
}
.item:nth-of-type(6n+4) {
grid-column: 1 / 2;
grid-row: 3 / 4;
}
.item:nth-of-type(6n+5) {
grid-column: 2 / 3;
grid-row: 3 / 4;
}
.item:nth-of-type(6n+6) {
grid-column: 3 / 5;
grid-row: 2 / 4;
}

但同样的结果...

我在规范中找不到任何解决方案来完成“可重复的网格模板区域”

你们中有人有什么想法吗?

最佳答案

grid-templates-areas 覆盖 grid-template-rows-columns 。您必须选择一种或另一种方式来描述您的网格布局。

对于重复模式,您可以使用 :nth-child(n) 并重置跨越值:( https://codepen.io/gc-nomade/pen/qVdpwL )或下面的片段

.grid {
width: 1000px;
margin: 0 auto;
display: grid;
grid-gap: 25px;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 200px;
padding: 10px;
counter-reset:div
}
.item:nth-child(6n + 4),
.item:nth-child(6n + 1) {
grid-column: auto /span 2;
grid-row: auto /span 2;
}
.item {
border: solid;
display:flex;
}
.item:before {
counter-increment:div;
content:counter(div);
margin:auto;
font-size:40px;
}
<div class="grid">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>


如果您的元素随机出现但需要放置在网格中的特定位置(第 6 位应位于第 4 位并跨越),那么您将需要为每个元素设置一个顺序值 :( .... 在那里您需要如果内容和订单可能会有所不同,则在 javascript 上进行中继

关于CSS Grid - 可重复的网格模板区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47039979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com