必须写,它是强制前提而非建议,用于触发标准模式渲染,避免怪异模式导致布局和JS异常;lang属性必须准确设置以保障可访问性和SEO;meta charset需为UTF-8(无BOM),viewport须在head内且不晚于前1KB。

HTML 文档必须以 开头,否则浏览器会进入怪异模式(Quirks Mode),导致 CSS 布局、JS 行为不可预测——这不是可选“建议”,而是强制前提。
为什么必须写 ?
这个声明不是 HTML 标签,而是告诉浏览器:“请用标准模式渲染”。没有它,IE 会退化到 IE5.5 渲染逻辑,Chrome/Firefox 也会启用兼容性兜底规则。常见症状包括:box-sizing 失效、flex 布局错乱、getBoundingClientRect() 返回值异常。
注意: 必须是文档第一行,前面不能有任何字符(包括空格、BOM、注释)。
标签的 lang 属性要不要加?
要加,且必须准确。屏幕阅读器、搜索引擎、翻译工具都依赖它判断语言。错误或缺失会导致语义识别失败、SEO 权重下降、自动翻译出错。
立即学习“前端免费学习笔记(深入)”;
-
lang="zh-CN":简体中文(中国大陆) -
lang="zh-TW":繁体中文(台湾) -
lang="en":通用英语(不推荐,应细化为en-US或en-GB)
不写 lang 不报错,但 WCAG 可访问性检测会直接标为「严重缺陷」。
meta charset 和 viewport 的顺序与写法
应紧随 之后(或至少在第一个 之前),确保浏览器尽早解码; 必须放在 内,且不能晚于前 1KB 内容——否则 iOS Safari 可能忽略它。
常见错误:
- 写成
(缺横线,无效) - 把
viewport放在里(完全无效) - 用
user-scalable=no(违反 WCAG,部分浏览器已禁用)
页面标题 内容开始
最容易被忽略的是 BOM:用 VS Code 保存时若选了「UTF-8 with BOM」,开头会多出不可见字节,让 失效。务必设为「UTF-8」(无 BOM)。











