You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:实现交替占比的两行两列CSS Grid布局

解决方案

要实现这种交替比例的双列Grid布局,核心是把网格列分为3等份(对应1/3和2/3的宽度比例),然后通过nth-child选择器精准控制每个帖子的列跨度,同时确保每行固定两个元素。

修正后的CSS代码

.latest-posts-block {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 分成3个等宽列,方便分配1/3和2/3比例 */
  gap: 1rem; /* 可选:添加帖子间的间距 */
}

/* 奇数行(第1、3、5...行)的第一个帖子:占1/3宽度 */
.latest-posts-block__post:nth-child(4n + 1) {
  grid-column: 1 / 2;
}

/* 奇数行的第二个帖子:占2/3宽度,填满当前行剩余空间 */
.latest-posts-block__post:nth-child(4n + 2) {
  grid-column: 2 / 4;
}

/* 偶数行(第2、4、6...行)的第一个帖子:占2/3宽度 */
.latest-posts-block__post:nth-child(4n + 3) {
  grid-column: 1 / 3;
}

/* 偶数行的第二个帖子:占1/3宽度 */
.latest-posts-block__post:nth-child(4n + 4) {
  grid-column: 3 / 4;
}

代码说明

  • grid-template-columns: repeat(3, 1fr):将网格横向拆分为3个等宽单元,1个单元对应1/3宽度,2个单元对应2/3宽度,完美匹配需求的比例分配。
  • nth-child(4n + x)的逻辑:每4个元素为一组(对应2行),通过该选择器精准定位到奇数行、偶数行的每个帖子,控制它们的列跨度:
    • 4n+1:第1、5、9...个元素(奇数行第一个),占1列
    • 4n+2:第2、6、10...个元素(奇数行第二个),占2列
    • 4n+3:第3、7、11...个元素(偶数行第一个),占2列
    • 4n+4:第4、8、12...个元素(偶数行第二个),占1列
  • 该写法无需硬编码行数,无论帖子数量多少,都会自动按规则换行并保持比例。

适配单元素收尾场景

如果最后一行只有1个帖子,默认会按它的位置规则占对应宽度,若想让它占满整行,可额外添加:

/* 当总帖子数为奇数时,让最后一个帖子占满整行 */
.latest-posts-block__post:last-child:nth-child(odd) {
  grid-column: 1 / 4;
}

内容的提问来源于stack exchange,提问作者in2d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:42:12