gpt4 book ai didi

css - 如何重复 CSS 网格布局模式?

转载 作者:行者123 更新时间:2023-11-28 08:35:13 25 4
gpt4 key购买 nike

我正在尝试制作一个包含重复 2 个垂直部分和 2 个水平部分的网格布局。然后 2 个水平,2 个垂直,我们再次重复。

像这样:

.container {
max-width:940px;
margin: 0 auto;
}

.grid-container {
counter-reset: div;
display:grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 186px;
grid-gap:20px;
justify-content:center;
grid-template-areas:
"vert1 vert2 hor1 hor1"
"vert1 vert2 hor2 hor2"
"hor3 hor3 vert3 vert4"
"hor4 hor4 vert3 vert4"
}

.item-a {
grid-area: vert1;
}
.item-b {
grid-area: vert2;
}
.item-c {
grid-area: hor1;
}
.item-d {
grid-area: hor2;
}
.item-e {
grid-area: hor3;
}
.item-f {
grid-area: hor4;
}
.item-g {
grid-area: vert3;
}
.item-h {
grid-area: vert4;
}
.item-j {
grid-area: hor2;
}
.item-k {
grid-area: hor2;
}
.item-l {
grid-area: hor2;
}
.item-m {
grid-area: hor2;
}


.grid-container > div {
box-shadow: 0 0 11px 0 #b9b9b9;
}

.grid-container > div:before {
counter-increment: div;
content: counter(div);
margin: auto;
font-size: 40px;
display:flex;
}
<div class="container">
<div class="grid-container">
<div class="item-a"></div>
<div class="item-b"></div>
<div class="item-c"></div>
<div class="item-d"></div>
<div class="item-e"></div>
<div class="item-f"></div>
<div class="item-g"></div>
<div class="item-h"></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>

我找不到在自动(无限)行上获取它的方法,只能使用网格模板区域。

grid-template-areas: 
"vert1 vert2 hor1 hor1"
"vert1 vert2 hor2 hor2"
"hor3 hor3 vert3 vert4"
"hor4 hor4 vert3 vert4"

有人有什么想法吗?

最佳答案

您可能会考虑像下面这样重复的许多网格容器:

.container {
max-width: 940px;
margin: 0 auto;
counter-reset: div;
}

.grid-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 100px;
grid-gap: 20px;
margin-bottom:20px;
}
.grid-container:nth-child(2n+1) {
grid-template-areas:
"v1 v2 h1 h1"
"v1 v2 h2 h2"
}
.grid-container:nth-child(2n) {
grid-template-areas:
"v1 v1 h1 h2 "
"v2 v2 h1 h2 "
}

.item-a {
grid-area: v1;
}

.item-b {
grid-area: v2;
}

.item-c {
grid-area: h1;
}

.item-d {
grid-area: h2;
}

.grid-container>div {
box-shadow: 0 0 11px 0 #b9b9b9;
}

.grid-container>div:before {
counter-increment: div;
content: counter(div);
font-size: 40px;
}
<div class="container">
<div class="grid-container">
<div class="item-a"></div>
<div class="item-b"></div>
<div class="item-c"></div>
<div class="item-d"></div>
</div>
<div class="grid-container">
<div class="item-a"></div>
<div class="item-b"></div>
<div class="item-c"></div>
<div class="item-d"></div>
</div>
<div class="grid-container">
<div class="item-a"></div>
<div class="item-b"></div>
<div class="item-c"></div>
<div class="item-d"></div>
</div>
<div class="grid-container">
<div class="item-a"></div>
<div class="item-b"></div>
<div class="item-c"></div>
<div class="item-d"></div>
</div>
<div class="grid-container">
<div class="item-a"></div>
<div class="item-b"></div>
<div class="item-c"></div>
<div class="item-d"></div>
</div>

</div>

如果你只需要一个网格,你可以考虑这样一个事实,即你有一个重复每 8 个元素的模式并使用 nth-child() 如下所示

.grid-container {
max-width: 940px;
margin: 0 auto;
counter-reset: div;

display: grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 100px;
grid-auto-flow: dense;
grid-gap: 20px;
}

.grid-container> :nth-child(8n + 1),
.grid-container> :nth-child(8n + 2),
.grid-container> :nth-child(8n + 7),
.grid-container> :nth-child(8n + 8) {
grid-row: span 2;
}

.grid-container> :nth-child(8n + 3),
.grid-container> :nth-child(8n + 4),
.grid-container> :nth-child(8n + 5) {
grid-column: span 2;
}

.grid-container> :nth-child(8n + 6) {
grid-column: 1/span 2;
}


.grid-container>div {
box-shadow: 0 0 11px 0 #b9b9b9;
}
.grid-container>div:before {
counter-increment: div;
content: counter(div);
font-size: 40px;
}
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>

关于css - 如何重复 CSS 网格布局模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52898785/

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