sub 和 sup 是语义化标签,用于表示下标和上标,影响可访问性与seo;纯视觉调整应使用 span 加 css,避免滥用语义标签。

sub 和 sup 的语义与默认渲染行为
HTML 的 <sub></sub> 和 <sup></sup> 不是样式标签,而是语义化元素:前者表示下标(如化学式 H2O),后者表示上标(如平方 m2)。浏览器默认会缩放字体并偏移基线,但缩放比例、垂直位移量由 UA 样式决定,不同浏览器略有差异,不能当作精确排版工具使用。
常见误用是拿它们“微调文字位置”,比如想把“注册®”的 ® 拉高一点——这属于视觉调整,应优先用 CSS,而非滥用语义标签。
什么时候必须用 sub/sup,而不是 CSS
当内容本身具有明确的下标或上标语义时,必须用 <sub></sub> 或 <sup></sup>,否则会影响可访问性(屏幕阅读器会读出“下标 2”“上标 2”)和 SEO 结构化理解。
- 化学式:
<span>CO</span><sub>2</sub> - 数学公式:
x<sup>2</sup> + y<sup>2</sup> - 单位符号:
cm<sup>3</sup> - 避免:
<span style="vertical-align: super; font-size: 0.7em">®</span>—— 缺少语义,AT 工具无法识别
用 CSS 覆盖默认 sub/sup 行为的注意事项
如果确实需要统一控制尺寸或位移(比如设计系统要求所有上标统一为 65% 字号 + 0.35em 上移),可以用 CSS 重置,但要注意:
-
vertical-align值建议用super/sub,而非top或像素值,否则在行高变化时易错位 - 不要只改
font-size,必须同步调整line-height或用transform: translateY()避免影响整行高度 - IE11 及更早版本不支持
vertical-align: super/sub在非内联元素上生效,若需兼容,得加display: inline - 示例重置(现代浏览器):
sub, sup { font-size: 0.75em; vertical-align: sub; }<br>sup { vertical-align: super; }
替代方案:用 span + CSS 实现更灵活的角标
纯视觉需求(如商标符号®、版权©、脚注标记*)应该用 <span></span> 加类名,再用 CSS 精确控制。这样语义干净、样式可控、无障碍友好(可通过 aria-label 补充说明)。
- 正确写法:
<span class="trademark" aria-label="registered trademark">®</span> - CSS 示例:
.trademark {<br> font-size: 0.65em;<br> vertical-align: 0.2em;<br> margin-left: -0.05em;<br>} - 关键点:用
vertical-align配合em单位,能随父级字号等比缩放;margin-left微调水平间距,避免紧贴前字
sub 和 sup 是“这是什么”,不是“让它看起来像什么”。一旦开始写 style="vertical-align: 12px",就该换回 span。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











