声明一个纯英文段落,结果屏幕阅读器仍然用中文语调朗读,听起来非常别扭。这类问题,绝大多数情况下是lang属性使用不当造成的。 一个常见的误区是:lang属性不能随意放置在任意元素上就认为生效。必须将其放在语义化标签上,例如、、等。如果使用包裹英文内容,则无效。因为本身不传递语言意图,屏幕阅读器不会将
声明一个纯英文段落,结果屏幕阅读器仍然用中文语调朗读,听起来非常别扭。这类问题,绝大多数情况下是lang属性使用不当造成的。
一个常见的误区是: 长期稳定更新的攒劲资源: >>>点此立即查看<<< 正确的做法是,将 这些标签语义明确,屏幕阅读器才能识别,再配合 如果页面根元素设置了 一个特别常见的错误是给 JavaScript拼接HTML字符串后插入DOM,是最容易遗漏 在实际项目中,最容易被忽略的反而是那些“一眼就能看懂”的英文术语。例如页面中写lang属性不能随意放置在任意元素上就认为生效。必须将其放在语义化标签上,例如、、等。如果使用
lang写在代表“独立语言单元”的标签上。例如:
lang属性,切换发音才能正常生效。局部语言声明,别与CSS的
:lang()混淆lang="zh-CN",中间插入一段,那么CSS中的:lang(zh-CN)仅作用于未覆盖lang的元素,而英文段落的引号、排版则需要通过:lang(en)控制。但有一个容易忽略的细节::lang()匹配是精确字符串匹配。:lang(zh)不会匹配lang="zh-CN",同样:lang(zh-CN)也不会匹配lang="zh-Hans"。
:lang(zh)覆盖所有中文变体,实际使用时需要逐一列出zh-CN、zh-TW、zh-HK[lang^="zh"]进行前缀匹配更为实用lang会触发自身的:lang()规则,但不会“取消”父级样式代码块、引用、标题中的
lang值,不可随意填写写上lang="bash"或lang="ja vascript"。但BCP 47标准不认可编程语言名称。如果代码块中包含英文注释,就应写lang="en";如果是日文文档说明,则写lang="ja"。同样,引用外文时,lang必须与实际内容语言一致,不能因为引号像英文就填写en。
注释是英文,语言码合法# 初始化一个变量
echo "hello"
bash不是语言,要么去掉lang,要么写lang="en" 引用德语,语义和语言对齐Guten Tag
不支持lang属性,浏览器直接忽略动态插入内容:语言声明需随内容一起传入
lang的场景。如果忘记添加lang,该段内容会继承父级语言,结果导致英文被中文引擎硬读。在React或Vue中使用JSX或模板渲染时,lang必须是静态属性或由i18n数据驱动,而不是事后使用element.setAttribute('lang', 'en')补救。等到屏幕阅读器解析完毕再补充,基本已经无效。
{ text: "Hello", lang: "en" }document.documentElement.lang推断局部语言,它仅定义主语言,无法决定子内容HTTP status code,不加lang="en",屏幕阅读器就会读成“H T T P 状 态 代 码”。语言声明不是装饰,而是告诉机器“这段字应该如何朗读、如何断词、如何处理”,一条最小的契约,却直接影响用户体验。