17370845950

HTML5doctype声明怎么写_HTML5文档类型定义【教程】
是 HTML5 唯一正确且必需的文档类型声明,因其不基于 SGML 故无需 DTD;省略或写错将触发怪异模式,导致布局、API 行为异常,现代框架和构建工具也需确保其首行无空格、无 BOM、大小写不限但内容严格匹配。

HTML5 的 就是全部,没有其他变体,也不需要系统标识符或 URL。

为什么只写 就够了

HTML5 不再基于 SGML,所以不需要引用 DTD 文件;浏览器只要看到这个声明,就会以标准模式(standards mode)解析文档。任何多余内容——比如加引号、加空格、拼错大小写、补上 URL——都可能触发怪异模式(quirks mode)或导致校验警告。

  • ✅ 正确且唯一推荐写法
  • ✅ 全小写也合法(HTML5 不区分大小写)
  • ❌ 这是 HTML4 的写法,不是 HTML5
  • ⚠️ 虽然规范里提过,但无实际作用,纯属冗余

不写或写错 会怎样

省略它,或者写成 等错误形式,浏览器大概率进入怪异模式:盒模型计算异常、width 行为不一致、getBoundingClientRect() 返回值偏差、Flex/Grid 布局失效等。

  • Chrome / Firefox / Safari 在无 doctype 或非法 doctype 下会启用 quirks mode
  • IE6–8 的 quirks mode 影响更严重,连 document.getElementById 都可能返回 null
  • 现代框架(如 React/Vue)生成的 HTML 仍需手动确保首行是 ,否则 SSR 输出可能被降级

在模板和构建工具中怎么保证正确

多数现代脚手架(Vite、Create React App、Next.js)默认已内置正确 doctype,但自定义 HTML 模板时容易遗漏或误改。

立即学习“前端免费学习笔记(深入)”;

  • Webpack 的 html-webpack-plugin:通过 template 选项指定 HTML 文件,必须确认其第一行为
  • Vite 的 index.html:直接编辑该文件,删掉注释或空行顶格写
  • 服务端渲染(如 Express + EJS):确保模板开头就是 ,不要被前导空格或 BOM 字符干扰



  
  页面标题


  

Hello

最容易被忽略的是:有些编辑器保存时自动添加 BOM(尤其是 Windows 上的记事本),会导致 前出现不可见字符,浏览器无法识别——务必用 VS Code、Sublime 等工具检查并保存为「UTF-8 无 BOM」格式。