表格单元格的lang属性必须直接写在或上,或上的lang无效;混排时主语言用外层td声明,外语术语用等语义化标签包裹;:lang()需精确匹配且不继承,推荐用td[lang^="zh"]。

表格单元格的 一个单元格内既有中文说明又有英文术语(如“调用 写了 最容易被忽略的是:表格里每个 lang 属性必须直接写在 <td> 或 <code><th> 上,否则屏幕阅读器和浏览器完全不识别——给 <code><table> 或 <code><tr> 加 <code>lang 是无效操作。
为什么
<table lang="en"> 没用
<p>浏览器和屏幕阅读器(如 NVDA、VoiceOver)只检查每个 <code><td> 和 <code><th> 是否显式声明了 <code>lang。父级标签没有语言语义,<table> 或 <code><tr> 上的 <code>lang 值会被静默忽略。
<table lang="en"><td>API</td></table> → “API” 仍被中文引擎读作“阿皮”<tr lang="ja"><td>東京</td></tr> → 读屏软件无视 lang="ja",按页面主语言处理<td lang="ja">東京</td> 或 <th lang="en">Status</th>
<td> 里混排中英文时怎么设 <code>lang
useState”),不能整个 <td> 统一设 <code>lang="zh-CN"——这会让 useState 被中文引擎硬读成“优斯忒特”。
<td lang="zh-CN"> 声明
<li>外语术语用语义化元素包裹并单独设 <code>lang,例如:<code lang="en">useState
<span></span> 或 <div> 包裹,它们无语言语义;<code><code>、<abbr></abbr>、<cite></cite> 等是安全选择
2026-09-21、USD)无需加 lang,它们无自然语言发音规则CSS 的
:lang() 在表格里为什么不生效td:lang(zh-Hans) { font-family: "PingFang SC"; } 却没效果?大概率卡在这两个点::lang() 是精确字符串匹配:如果单元格是 <td lang="zh-CN">,那 <code>:lang(zh-Hans) 就不会命中
lang 的匹配逻辑:即使 <td lang="zh-CN"><strong>行</strong></td>,strong:lang(zh-CN) 也无效,因为 <strong></strong> 自身没 lang
td[lang^="zh"] 覆盖 zh-CN、zh-Hans、zh-Hant
td 上,靠 lang 控制引号、断词等其他行为<td> 或 <code><th> 的 <code>lang 值,必须严格对应其实际文本的语言,而不是“看起来像英文就填 en”。日文汉字、韩文、法语词一旦标错,语音引擎就会降级或误读,且这种错误在视觉上完全不可见。











