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

如何让圆形按钮内文本垂直居中?解决短横线对齐异常问题

问题描述

我正尝试使用CSS创建可调整大小的按钮(点击事件后续添加)。目前效果接近预期,但最后一个仅含短横线的按钮中文本未垂直居中,前两个按钮(+、×)的文本已按预期垂直居中。请问我哪里操作有误?我猜测可能是该字体中短横线的固有设计问题,若真是如此,能否推荐一个可实现垂直对齐的更合适的Unicode短横线字符?

当前代码

CSS代码

body {
  background-color: Aqua;
}

.button {
  height: 25px;
  width: 25px;
  background-color: white;
  border-radius: 50%;
  border: 2px solid black;
  display: block;
  font-size: 200%;
}

.button div {
  vertical-align: middle;
  font-weight: 800;
}

.button:not(:last-child) {
  margin-bottom: .4cm;
}

HTML代码

<body>
  <div style="text-align:center">
    <h1>Resizer Buttons</h1>
    <span class="button"><div>+</div></span>
    <span class="button"><div>×</div></span>
    <span class="button"><div>–</div></span>
  </div>
</body>
解决方案

1. 修正CSS实现垂直居中

你当前的vertical-align: middle无效,因为div是块级元素,该属性对块级元素不生效。改用Flexbox布局可以彻底解决字符居中问题,不受字符本身字体基线的影响:

修改后的CSS:

body {
  background-color: Aqua;
}

.button {
  height: 25px;
  width: 25px;
  background-color: white;
  border-radius: 50%;
  border: 2px solid black;
  display: flex;
  align-items: center; /* 垂直居中 */
  justify-content: center; /* 水平居中 */
  font-size: 200%;
  font-weight: 800;
}

.button:not(:last-child) {
  margin-bottom: .4cm;
}

同时可以简化HTML,去掉嵌套的div:

<body>
  <div style="text-align:center">
    <h1>Resizer Buttons</h1>
    <span class="button">+</span>
    <span class="button">×</span>
    <span class="button">–</span>
  </div>
</body>

2. 推荐Unicode短横线字符

如果想换更适合垂直对齐的短横线,可选以下几个:

  • HYPHEN-MINUS:-(普通键盘短横线,多数字体中基线居中表现稳定)
  • FIGURE DASH:‑(为数字设计的短横线,垂直对齐一致性更好)
  • EN DASH:–(你当前使用的字符,配合Flex布局即可正常居中)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:01:02