是唯一语义正确、可访问性合规的下标实现方式,用于需读屏器识别为“下标”的场景(如h2o),支持嵌套、任意文本及结构化数据解析,优于unicode下标字符。

<sub></sub> 标签是唯一语义正确、可访问性合规的下标实现方式,别用 vertical-align 或字体缩放模拟。
什么时候必须用 <sub></sub> 而不是 Unicode 字符
当内容需被读屏器识别为“下标”而非普通字符时——比如化学式 H<sub>2</sub>O,读屏器会念作“H 下标 2 O”;若写成 H₂O(Unicode 下标 ₂),多数读屏器仍读作“H 2 O”,语义丢失。搜索引擎、学术数据库也依赖 HTML 语义解析结构化数据,<sub></sub> 是明确信号。
- Unicode 下标字符(如 ₂、₃)仅适合纯展示、无交互、不涉辅助技术的场景(如静态海报、控制台输出)
-
<sub></sub>支持嵌套和组合:CO<sub>2</sub><sup>−</sup>表示带电荷的碳酸根,语义清晰 - Unicode 不支持非数字下标(如
x<sub>i</sub>中的字母 i),而<sub></sub>可包裹任意文本
<sub></sub> 在不同环境中的渲染差异
所有现代浏览器原生支持 <sub></sub>,默认字号约父级的 75%,垂直偏移由 UA 样式控制。但要注意:
- 在
<pre class="brush:php;toolbar:false;"></pre>或等宽字体中,偏移可能异常,此时应改用font-variant-position: sub - 旧版 IE(≤8)默认样式不准,可加轻量重置:
sub { font-size: 75%; line-height: 0; position: relative; top: 0.2em; } - 连续多个
<sub></sub>会叠加降低基线(如A<sub>1</sub><sub>2</sub>),应合并为A<sub>12</sub>
常见错误:把数学表达式或单位误套 <sub></sub>
下标必须对应真实语义。以下写法是错的:
-
a<sub>n</sub>+1→ 若 “n+1” 整体是索引(如数列第 n+1 项),应写a<sub>n+1</sub>;若只是 aₙ 再加 1,则a<sub>n</sub>+1正确 -
m<sub>3</sub>表示“立方米”?错。单位中的 3 是上标(m³),应使用<sup>3</sup> -
©<sub>2025</sub>?版权符号 © 后年份无下标语义,直接写© 2025
真正容易被忽略的是:下标本身不占水平空间,但会影响整行的基线对齐。中英文混排、多层化学式(如 Na<sub>2</sub>SO<sub>4</sub>)密集出现时,段落行高可能被意外撑开——这不是 bug,是浏览器按规范对基线重新计算的结果。需要微调时,优先用 line-height 或 vertical-align 作用于父容器,而不是强行覆盖 sub 的默认行为。











