必须为中文页面设置 lang="zh-cn" 等合法 bcp 47 标签于 标签上,否则搜索引擎可能误判为英文站、屏幕阅读器朗读错误、字体渲染异常,且需避免无效写法如 lang="chinese" 或下划线格式。

lang属性不写,搜索引擎真会当你是英文站
如果你的页面是中文内容但没写 lang,Google 和 Bing 大概率按 Accept-Language 请求头或默认语言(通常是 en)来索引——结果就是:中文用户搜不到你,或者被塞进英文搜索结果页。实测中,某电商首页未设 lang="zh-CN",在百度和 Google.cn 的“上海签证材料”类长尾词中完全掉出前 100 名。
- 必须写在
标签上,且只能有一个根级lang - 不能只写
zh或cn,必须组合成合法 BCP 47 标签,如zh-CN、zh-Hans、en-GB - 多语言子站(如
/en/、/ja/)必须每个页面独立设置对应lang,不能复用模板默认值
屏幕阅读器读错“北京”,往往就因为 lang="en"
NVDA、VoiceOver 这类工具依赖 lang 切换 TTS 引擎和断词逻辑。设成 lang="en" 的中文段落,会被逐字按英语发音规则朗读(比如“北京”变成 “Bei Jing”,声调全丢),对视障用户是实质性信息损失。
-
lang具有继承性:子元素不声明时,自动沿用父级(包括)的值 - 混排多语言时,必须在具体元素上覆盖:例如
<p lang="en">API documentation</p> - 避免用
lang="zh"模糊声明——zh-Hans(简体)和zh-Hant(繁体)触发的语音引擎不同,尤其影响拼音标注与分词
浏览器字体渲染和排版也看 lang 属性
Chrome 和 Safari 对中日韩文字的默认字体回退链、标点挤压(如中文引号「」与英文" "的间距)、连字处理(ligature)都受 lang 影响。没设或设错,可能导致“微软雅黑”被跳过,降级到 Courier New 显示中文,或英文段落里中文标点撑开异常间距。
- 同一页面内中英混排时,
lang是比 CSSfont-family更底层的语言感知开关 - 某些字体(如 Noto Sans CJK)内部嵌了语言分支规则,只有匹配
lang才启用对应字形变体 - 不要依赖操作系统区域设置自动推断——移动端 WebView、无头浏览器等环境常无此能力
常见错误写法和验证方式
最常踩的坑不是“忘了写”,而是写了但无效:比如写成 lang="Chinese"、lang="zh_cn"(下划线非法)、lang="zh-CN "(末尾空格)、或把 lang 错加在 上。
- 验证是否生效:打开 DevTools → Elements 面板,检查
标签是否带正确lang值 - 自动化检测:Lighthouse 的 “Accessibility” 报告会直接标出缺失或无效
lang - 线上校验:用 W3C Markup Validation Service 提交 HTML,它会报出不符合 BCP 47 的语言标签
lang 属于那种改起来两秒、漏掉却要花半天排查 SEO 流量下跌或无障碍审计失败的细节。它不改变视觉,但所有依赖语言上下文的系统——从爬虫到语音引擎再到字体栈——都拿它当第一手依据。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











