lang属性必须设为带地区后缀的值(如zh-CN),因ISO 639-1要求明确变体,影响发音、字形、拼写检查及翻译;charset必须为首项meta标签;user-scalable=0已失效;data-属性需全小写短横线命名。

lang 属性必须设,否则屏幕阅读器和搜索引擎会按默认语言(通常是英文)解析页面
为什么 lang 不能只写 lang="zh"?
ISO 639-1 标准要求地区变体明确:中文应写 lang="zh-CN"(简体中文)、lang="zh-TW"(繁体中文),而非模糊的 lang="zh"。浏览器和语音合成引擎依赖该值选择正确发音规则与字形渲染逻辑;Chrome 会据此调整拼写检查词典,Edge 则影响自动翻译触发精度。
常见错误现象:
- 使用
lang="Chinese"或lang="ch"—— 浏览器直接忽略该属性 - 在
外层元素(如)上重复设置lang—— 不生效,只有根元素有效charset必须放在的第一个位置要紧贴开始,且必须是内首个。若它被或其他挡在后面,IE 和旧版 Safari 可能误判编码,导致中文乱码或脚本解析中断。使用场景:
- 服务端未发送
Content-Type: text/html; charset=UTF-8响应头时,此标签是唯一可靠编码声明方式 - 本地打开 HTML 文件(
file://协议)时,完全依赖该标签
viewport的user-scalable=0已被主流浏览器限制Chrome 76+、Firefox 69+、Safari iOS 13.4+ 已无视
user-scalable=0,即使写了也允许双指缩放。这是为无障碍访问强制保留的能力 —— 视力障碍用户必须能放大文字。真正可控的参数只有:
-
width=device-width:必需,否则移动端会以桌面宽度(通常 980px)渲染 -
initial-scale=1.0:建议显式写出,避免部分安卓 WebView 默认缩放偏差 -
maximum-scale和minimum-scale仅作提示,不具强制力
data-属性不是“随便加”,命名有硬约束data-开头的自定义属性名必须全小写、用短横线分隔(kebab-case),不能含大写字母或下划线。例如data-user-id合法,data-userId或data_user_id在 JS 中通过element.dataset访问时会被转成小写并替换短横线为驼峰:element.dataset.userId→ 实际取的是data-user-id,而data-userId根本不会出现在dataset对象里。容易踩的坑:
- 在 Vue/React 等框架中绑定
data-属性时,模板编译可能自动转换命名,需检查最终生成的 DOM - 用
getAttribute('data-xxx')可绕过 dataset 映射规则,但失去驼峰便利性
最常被忽略的是
lang值的地区后缀 —— 它不只影响 SEO,还决定标点符号渲染(如中文引号「」vs 英文 “”)、数字分隔符(1,000 vs 1 000)和日期格式化行为,这些在国际化项目里后期很难补救。 - 服务端未发送
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











