求助: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; }
关键细节说明
- CSS Grid布局:相比Flexbox,Grid天生适配这种规整的网格结构,一行代码就能定义3列3行的布局。
- 边框处理:通过
nth-child选择器精准移除重复边框,让棋盘呈现标准的井字线条。 - 交互优化:添加指针光标和hover背景色,明确告知用户格子可点击。
这样就能得到一个视觉规范、交互友好的棋盘,后续只需要补充JS逻辑处理落子和胜负判断即可。
内容的提问来源于stack exchange,提问作者Natsu
相关产品推荐
相关产品推荐

