ruby 和 rt 标签用于语义化汉字注音,ruby 包裹汉字,rt 放拼音,rp 为旧浏览器括号兼容;rb 可省略,rt 需与汉字一对一映射;标注须依实际读音与分词,css 应用标准属性调控样式,动态生成需确保拼音与汉字严格对应且符合语音规范。

ruby 和 rt 标签的基本用法
HTML 的 ruby 元素专为汉字注音设计,不是装饰性标签,而是语义化标注——浏览器和读屏软件能识别其结构。核心结构是:ruby 包裹汉字(rb 或普通文本),rt 放拼音,rp 是可选的括号 fallback(旧浏览器兼容用)。
常见错误是把拼音直接写在汉字后面、用空格或斜杠分隔,这既不可访问,也无法被语音引擎正确朗读。
-
rb标签在现代用法中可省略,直接把汉字放ruby里即可 -
rt必须紧跟在对应汉字内容之后(逻辑顺序,不强制 DOM 紧邻) - 多个字配多个拼音时,每个
rt应与一个汉字(或rb)形成一对一映射
单字、多字与分词标注的实际写法
拼音标注不是简单“字对字”,需按汉语实际读音和分词处理。比如“重庆”读作 Chóngqìng 而非 Zhòngqìng,“一”在不同语境中变调(如“一个”读 yí gè)。
HTML 不做语音规则判断,只负责结构表达。你得自己决定标哪一层:字级、词级还是短语级。
- 单字标注:
<ruby>好<rt>hǎo</rt></ruby> - 两字词标注(整体读音):
<ruby>重庆<rt>Chóngqìng</rt></ruby> - 两字词分字标注(强调字本音):
<ruby>重<rt>chóng</rt>庆<rt>qìng</rt></ruby> - 带
rp的兼容写法(iOS Safari 旧版等可能需要):<ruby>好<rt>hǎo</rt><rp>(</rp><rp>)</rp></ruby>
样式控制与常见渲染问题
默认情况下,rt 会显示在汉字正上方、小号字体、居中对齐。但不同浏览器渲染细节有差异:Chrome 和 Firefox 基本一致;Safari 在某些字号下可能错位;Android WebView 旧版本可能忽略 ruby 样式。
用 CSS 调整时,优先使用标准属性,避免 hack:
- 控制拼音字体大小:
ruby rt { font-size: 0.6em; } - 调整上下间距(避免压字):
ruby { line-height: 2; }或给rt加margin-top - 禁用拼音换行(防止断在拼音中间):
ruby rt { white-space: nowrap; } - 不要用
position: absolute覆盖原生行为——会破坏可访问性和响应式布局
与 JavaScript 动态生成拼音的配合要点
如果用 pinyin-js、pinyin-pro 等库自动加注,注意别把拼音塞进 title 或伪元素——那不属于语义化标注。必须输出合法的 ruby 结构。
动态生成时最容易出错的是:拼音数组与汉字字符串长度不一致、未处理轻声/变调、忽略多音字上下文。
- 先 split 汉字字符串(
[...str]),再逐字查拼音,比用str.split('')更可靠(避开 emoji、组合字符干扰) - 遇到多音字(如“长”),不能只取第一个读音;至少提供人工配置入口或上下文词典
- 服务端渲染更稳妥;客户端 JS 注入后,记得触发
aria-live区域更新(供读屏器感知) - 避免在
ruby内嵌套span或事件监听器——会干扰浏览器对 ruby 结构的解析
真正麻烦的从来不是写对 ruby 标签,而是拼音本身是否准确、是否符合教学/出版规范、是否适配方言或特殊读音场景。工具能帮你套结构,但读音判断还得人来把关。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











