必须用且置于第一行开头,不可有任何前置字符;它触发标准模式,缺失或错误会导致怪异模式、布局错乱、flex/grid失效等问题。

HTML5 文档声明怎么写
必须用 ,且必须放在第一行、最开头,前面不能有任何字符(包括空格、BOM、注释)。它不区分大小写,但惯例全大写。
常见错误现象:XML declaration error、IE 进入怪异模式(Quirks Mode)、CSS 布局错乱、flex 或 grid 不生效——往往就是这个声明缺失或位置不对。
- 不要写成
(小写虽可解析,但不符合惯例) - 不要加任何版本号,如
或 <code> —— 那是过时写法 - 不要在它前面放
<?xml version="1.0" encoding="UTF-8"?>(XML 声明),否则在 HTML 解析器中会触发严重错误或降级为 Quirks Mode
为什么只用 就够了
这是 HTML5 的“简化文档类型声明”,浏览器靠它直接切换到标准模式(Standards Mode),启用完整的 HTML5、CSS3 和现代 DOM 行为。
对比旧式声明(如 XHTML 1.0 Strict):,它依赖 DTD 文件校验,加载慢、兼容差、实际已废弃。
立即学习“前端免费学习笔记(深入)”;
艺帆网络工作室网站源码,是国庆后新一批新概念的网站源码,采用流行的Html5和JS组合流畅顺滑,界面清晰明朗,适合科技类企业和公司建站使用。如果你是想成为一家独特的设计公司,拥有独特的文化,追求品质,而非数量与规模。 这种坚持一直贯穿于项目运作之中,从品牌建立、形象推广设计到品牌形象管理。那可以考虑使用这款艺帆网络工作室网站源码。 这款源码中服务项目和团队程序需要在_template文件夹下的in
- 现代浏览器(Chrome/Firefox/Safari/Edge)只认
作为进入标准模式的唯一可靠信号 - 它不触发网络请求(不像旧 DTD 声明可能尝试下载外部 DTD)
- 对移动端 WebView、Electron、微信小程序内嵌页等环境同样有效
没写或写错 会怎样
浏览器会退回到 Quirks Mode,行为接近 IE5.5:盒模型按 border-box 计算、width 包含 padding/border、float 渲染异常、getBoundingClientRect() 返回值不准、甚至 document.querySelector() 在某些老 WebView 中失效。
典型表现:display: flex 完全不工作、position: sticky 失效、rem 单位计算错乱、表单控件样式崩坏。
- 检查方式:打开 DevTools → Console 输入
document.compatMode,返回"CSS1Compat"才是标准模式;若为"BackCompat",说明声明缺失或无效 - VS Code / WebStorm 等编辑器新建 HTML 文件时默认已插入该声明,但复制粘贴代码或拼接模板时容易意外删掉
- 服务端渲染(SSR)场景下,如果模板引擎输出前多了一个空格或换行,也会让声明失效
其他文件类型是否需要这个声明
只对 .html 和 .htm 文件生效。浏览器根据响应的 MIME 类型(text/html)和文档开头内容共同判断解析模式,与后缀无关,但实践中绝大多数情况都依赖这个声明。
.xhtml、.xml、.svg 等需用各自规范的声明(如 <?xml version="1.0" encoding="UTF-8"?>),混用 可能导致解析失败或被忽略。
- 纯前端静态页、SPA 入口(
index.html)必须有 - 服务端返回的 HTML 片段(如 AJAX 加载的
innerHTML)不需要单独声明,它依附于主文档模式 - 邮件模板中使用 HTML 时,部分客户端(如 Outlook)仍依赖旧式 DTD,但那是特例,不属于标准 Web 开发范畴









