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

求助:The Odin Project中Tic Tac Toe棋盘的HTML与CSS搭建方法

用HTML和CSS搭建井字棋(Tic Tac Toe)棋盘的方案

你的基础HTML结构方向是对的,但有个小语法问题:id=middleRight没加双引号,得补上保持规范。另外,把所有格子放进一个容器里会更方便布局,我帮你调整了结构,再搭配CSS Grid就能快速实现标准3x3棋盘:

修正后的HTML

<div class="game-board">
  <div class="board-cell" id="upperLeft"></div>
  <div class="board-cell" id="upperCenter"></div>
  <div class="board-cell" id="upperRight"></div>
  <div class="board-cell" id="middleLeft"></div>
  <div class="board-cell" id="middleCenter"></div>
  <div class="board-cell" id="middleRight"></div>
  <div class="board-cell" id="lowerLeft"></div>
  <div class="board-cell" id="lowerMiddle"></div>
  <div class="board-cell" id="lowerRight"></div>
</div>

(把原board类改成board-cell语义更清晰,外层新增game-board容器用于布局)

对应CSS实现

/* 棋盘容器:用Grid快速构建3x3网格 */
.game-board {
  display: grid;
  grid-template-columns: repeat(3, 100px); /* 三列等宽,每列100px */
  grid-template-rows: repeat(3, 100px); /* 三行等高,每行100px */
  gap: 0; /* 消除格子间间距 */
}

/* 单个棋盘格子样式 */
.board-cell {
  border: 2px solid #333;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 48px;
  cursor: pointer;
}

/* 去掉重复边框,避免出现双线条 */
.board-cell:nth-child(-n+3) { border-top: none; }
.board-cell:nth-last-child(-n+3) { border-bottom: none; }
.board-cell:nth-child(3n+1) { border-left: none; }
.board-cell:nth-child(3n) { border-right: none; }

/* hover交互效果,提升用户感知 */
.board-cell:hover {
  background-color: #f0f0f0;
}

关键细节说明

  1. CSS Grid布局:相比Flexbox,Grid天生适配这种规整的网格结构,一行代码就能定义3列3行的布局。
  2. 边框处理:通过nth-child选择器精准移除重复边框,让棋盘呈现标准的井字线条。
  3. 交互优化:添加指针光标和hover背景色,明确告知用户格子可点击。

这样就能得到一个视觉规范、交互友好的棋盘,后续只需要补充JS逻辑处理落子和胜负判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:27:34