必须写,因为HTML5不基于SGML,无需DTD引用;其他写法如大小写错误、加空格、前置内容或BOM均会导致怪异模式或验证失败。

HTML5 的 必须全小写、无属性、无空格、无换行,且必须出现在文档第一行。
为什么只能写 ?
HTML5 不再基于 SGML,所以不需要引用 DTD 文件。过去 HTML4.01 或 XHTML 中的长串声明(如 )在 HTML5 中不仅无效,还可能触发怪异模式(Quirks Mode)或导致验证失败。
- 大小写敏感:
或都不符合规范,浏览器虽大多容错,但 W3C 验证器会报错 - 不能加空格:
或是非法语法 - 不能有注释或内容前置:哪怕一个 BOM 字符或空行,都可能导致 IE 进入怪异模式
常见错误现象与调试方法
如果页面布局错乱、getBoundingClientRect() 返回异常、CSS 的 box-sizing 行为不一致,很可能是 DOCTYPE 缺失或写错。
- 检查方式:在浏览器开发者工具的「Elements」面板顶部,看第一行是否严格为
- 验证方式:用 W3C Markup Validation Service 提交 HTML,若提示 “Bad value … for attribute doctype” 就是格式问题
- Node.js 环境生成 HTML 时注意:模板引擎(如 EJS、Pug)可能默认不输出 DOCTYPE,需显式添加
和 的关系
和 标签是两个独立结构,前者声明文档类型,后者是根元素。它们之间不能插入任何字符(包括换行)。
立即学习“前端免费学习笔记(深入)”;
… …
上面写法正确;下面写法会导致解析异常:
…
最容易被忽略的是编辑器自动插入的 UTF-8 BOM(尤其是 Windows 下用记事本保存的文件),它看不见却会让 DOCTYPE 失效。用 VS Code 打开后右下角查看编码,选「Save with Encoding → UTF-8」可清除 BOM。











