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

如何用display grid实现交替列数的响应式网格布局?

实现交替3列/2列的响应式Grid网格

要实现一行3列、下一行2列循环交替的网格布局,可通过Grid的列跨度结合CSS选择器控制每行元素的宽度分配,具体方案如下:

核心CSS修改

.rowsContainer {
    display: grid;
    /* 基础设置为3列布局,列宽自适应,保留间距 */
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    justify-items: center;
    align-items: center;
    justify-content: center;
}

.card {
    width: 190px;
    overflow: hidden;
    position: relative;
}

.horizontal {
    height: 159px;
}

.vertical {
    height: 243px;
}

/* 控制每组第4、5个元素(对应第二行)各占1.5列,实现2列效果 */
.card:nth-child(5n + 4),
.card:nth-child(5n + 5) {
    grid-column: span 1.5;
}

原理说明

  • 基础网格设为3列,确保第一行(第1-3个元素)默认显示3列。
  • 通过nth-child(5n + 4)和nth-child(5n + 5)选择器,选中每5个元素里的第4、5个(即第二行的两个元素),让它们各自跨越1.5个列宽,3列空间刚好容纳2个元素,形成2列布局。
  • 后续第6-8个元素回到默认1列宽度,重新组成3列,第9-10个再次触发2列,以此循环交替。

响应式适配(可选)

如果需要在小屏幕上自动调整列数,可添加媒体查询:

@media (max-width: 768px) {
    .rowsContainer {
        grid-template-columns: repeat(2, 1fr);
    }
    .card:nth-child(5n + 4),
    .card:nth-child(5n + 5) {
        grid-column: span 1;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:13:15