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

如何制作棋盘格图案?现有实现出现黑白条纹问题求助

解决棋盘格变成黑白条纹的问题

问题出在你只用单个格子的index奇偶性判断颜色——按顺序创建格子时,一行结束后下一行第一个格子的index必然和上一行最后一个index奇偶相反,导致每行颜色整体错位,形成条纹;index%8也不对,它只会让每8个格子重复颜色,无法实现棋盘格的交错效果。

正确逻辑

棋盘格的核心是每个格子的行号与列号之和的奇偶性:

  • 行号 + 列号 为偶数 → 一种颜色
  • 行号 + 列号 为奇数 → 另一种颜色

代码示例(8x8棋盘)

HTML

<div id="checkerboard"></div>

CSS

#checkerboard {
  display: grid;
  grid-template-columns: repeat(8, 50px);
  grid-template-rows: repeat(8, 50px);
}
.square {
  width: 50px;
  height: 50px;
}
.black {
  background-color: #000;
}
.white {
  background-color: #fff;
}

JavaScript(双层循环写法,更直观)

const checkerboard = document.getElementById('checkerboard');
const boardSize = 8;

for (let row = 0; row < boardSize; row++) {
  for (let col = 0; col < boardSize; col++) {
    const square = document.createElement('div');
    square.classList.add('square');
    // 关键判断:行+列的奇偶性
    square.classList.add((row + col) % 2 === 0 ? 'white' : 'black');
    checkerboard.appendChild(square);
  }
}

如果你用单层循环创建格子

const checkerboard = document.getElementById('checkerboard');
const boardSize = 8;

for (let index = 0; index < boardSize * boardSize; index++) {
  const square = document.createElement('div');
  square.classList.add('square');
  // 通过index计算行号和列号
  const row = Math.floor(index / boardSize);
  const col = index % boardSize;
  square.classList.add((row + col) % 2 === 0 ? 'white' : 'black');
  checkerboard.appendChild(square);
}

这样就能生成正确的黑白交错棋盘格,不会出现条纹问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:55:24