是 HTML5 唯一正确且必需的文档类型声明,因其不基于 SGML 故无需 DTD;省略或写错将触发怪异模式,导致布局、API 行为异常,现代框架和构建工具也需确保其首行无空格、无 BOM、大小写不限但内容严格匹配。
HTML5 的 就是全部,没有其他变体,也不需要系统标识符或 URL。
就够了
HTML5 不再基于 SGML,所以不需要引用 DTD 文件;浏览器只要看到这个声明,就会以标准模式(standards mode)解析文档。任何多余内容——比如加引号、加空格、拼错大小写、补上 URL——都可能触发怪异模式(quirks mode)或导致校验警告。
✅ 正确且唯一推荐写法 ✅ 全小写也合法(HTML5 不区分大小写) ❌ 这是 HTML4 的写法,不是 HTML5 ⚠️ 虽然规范里提过,但无实际作用,纯属冗余 会怎样
省略它,或者写成 、 等错误形式,浏览器大概率进入怪异模式:盒模型计算异常、width 行为不一致、getBoundingClientRect() 返回值偏差、Flex/Grid 布局失效等。
document.getElementById 都可能返回 null,否则 SSR 输出可能被降级
多数现代脚手架(Vite、Create React App、Next.js)默认已内置正确 doctype,但自定义 HTML 模板时容易遗漏或误改。
立即学习“前端免费学习笔记(深入)”;
html-webpack-plugin:通过 template 选项指定 HTML 文件,必须确认其第一行为
index.html:直接编辑该文件,删掉注释或空行顶格写
,不要被前导空格或 BOM 字符干扰
页面标题 Hello
最容易被忽略的
是:有些编辑器保存时自动添加 BOM(尤其是 Windows 上的记事本),会导致 前出现不可见字符,浏览器无法识别——务必用 VS Code、Sublime 等工具检查并保存为「UTF-8 无 BOM」格式。