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

如何用CSS Grid为6列偶数列网格实现棋盘格交错背景色

解决方案

纯CSS实现方案(无需修改HTML/JS)

你原来的写法失效是因为每行固定6列(偶数列),直接使用:nth-child(odd/even)会让每一行的奇偶位置规则统一,最终呈现同列颜色一致的效果。
由于布局固定每行6列,每12个网格子元素(对应两行)会构成一个完整的颜色循环周期,我们可以直接按周期匹配元素设置颜色:

.grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-gap: 15px;
}

.box {
  height: 100px;
  width: 100px;
  background-color: black; /* 默认黑色 */
}

/* 匹配周期内需要设为蓝色的元素 */
.box:nth-child(12n + 2),
.box:nth-child(12n + 4),
.box:nth-child(12n + 6),
.box:nth-child(12n + 7),
.box:nth-child(12n + 9),
.box:nth-child(12n + 11) {
  background-color: blue;
}

实现逻辑说明

我们需要的棋盘格效果本质是满足(行号 + 列号)为奇数的单元格设为蓝色,其余为黑色:

  • 奇数行:列号为偶数时,行号+列号为奇数,对应周期内第2、4、6位
  • 偶数行:列号为奇数时,行号+列号为奇数,对应周期内第7、9、11位
    这个方案可以兼容任意行数的扩展,不需要额外调整代码。

可选JS兼容方案(如果后续需要动态调整列数)

如果后续列数会动态变化,可以用JS批量给元素加样式,不需要改HTML结构:

const cols = 6; // 也可以动态读取grid的gridTemplateColumns属性计算实际列数
document.querySelectorAll('.box').forEach((box, index) => {
  const row = Math.floor(index / cols);
  const col = index % cols;
  box.style.backgroundColor = (row + col) % 2 === 1 ? 'blue' : 'black';
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:24:04