直接在子元素上设置lang属性即可覆盖父级语言声明,浏览器按该元素自身lang值处理文本、语音合成等,未声明时才向上查找祖先;lang值须符合bcp 47标准,仅影响语言相关逻辑,不改变样式或dom。

直接在子区块元素上显式设置 lang 属性即可。HTML 规范只允许 lang 和 dir 通过语义推断“继承”,但这种继承可被子元素自身的声明完全覆盖——不需要删除父级属性,也不依赖 JS 或 CSS。
用法很简单:写在目标元素上
浏览器渲染文本、语音合成、拼写检查等语言相关行为,会优先采用该元素自身声明的 lang 值;若未声明,才向上查找最近的带 lang 的祖先(包括 )。
-
<div lang="zh-CN">中文内容<span lang="en">English text</span> </div>→<span></span>内容按英文处理 -
<article lang="ja"><h2>タイトル</h2> <p lang="ko">제목입니다</p></article>→<p></p>独立使用韩文规则
注意命名规范与范围
lang 值应遵循 BCP 47 标准,如 zh-CN、en-US、fr、es-MX。它只影响语言相关逻辑,不改变样式、布局或 DOM 结构。
- 不是所有地方都需要设:只有当文本实际使用不同语言时才需声明
- 嵌套多层没问题:
<section lang="de"><blockquote lang="it"><p lang="pt">…</p></blockquote></section>合法且有效 - 避免冗余:如果整个页面都是同一种语言,只需在
上设一次
别和 data-*、class 或样式混淆
lang 是唯一被 HTML 明确定义为“可被语义推断覆盖”的全局属性,它不传播、不继承、不透传,也不受 CSS 影响。你不能用 style="lang: fr",也不能靠父元素的 data-lang="fr" 让子元素自动获得语言信息。
- 错误:
<div data-lang="fr"><p>bonjour</p></div>→<p></p>仍按默认语言处理 - 错误:
<div lang="fr"><p class="lang-en">hello</p></div>→ class 名无效,必须用lang="en" - 正确:
<div lang="fr"><p lang="en">hello</p></div>
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











