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

flex-box实现井字棋游戏网格文本垂直对齐失效问题求助

井字棋标记居中问题解决方案

核心原因说明

偏移问题主要来自三个常见布局误区:

  • 超大字号文本默认行高大于1,且字符本身的字体上下边距(ascent/descent区域)会导致视觉偏移
  • 未统一盒模型,边框计算逻辑可能带来像素级布局误差
  • 原10em的字号在默认根字号16px下实际大小为160px,已经超过了li容器150px的高度,必然会溢出偏移

具体修改方案

1. 统一全局盒模型与默认边距

在CSS最顶部添加全局重置规则,消除浏览器默认样式干扰:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

box-sizing: border-box会让li的边框计算在你设置的150px宽高内部,避免额外尺寸带来的布局错位。

2. 调整.marked类样式

替换原.marked类的样式为以下内容:

.marked {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 7.5em; /* 适配150px容器的字号,可根据需求微调 */
  line-height: 1; /* 强制行高等于字号,消除行高带来的上下空白 */
  vertical-align: middle; /* 修正字符基线对齐偏差 */
  /* 如果仍有细微垂直偏移,可添加以下属性微调数值即可 */
  /* transform: translateY(1px); */
}

完整修改后CSS代码

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

ul {
  display: flex;
  flex-wrap: wrap;
  width: 450px; /* 盒模型统一后3个150px的li总宽为450px,用这个值布局更精准 */
  list-style: none;
  padding-inline-start: 0;
}

li {
  width: 150px;
  height: 150px;
  border: 1px solid black;
  background-color: gray;
  display: flex;
  justify-content: center;
  align-items: center;
}

li:hover {
  background-color: yellow;
}

figure {
  display: flex;
  justify-content: center;
}

.marked {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 7.5em;
  line-height: 1;
  vertical-align: middle;
}

调整后所有标记可以实现像素级的水平垂直居中,你也可以根据实际显示效果微调字号和transform的偏移值适配不同字体。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:27:03