前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库DOCTYPE HTML 解析 标准模式 怪异模式
HTML语义与文档

HTML 开头不写 DOCTYPE,浏览器会怎样渲染?

现代 HTML 页面应以 <!doctype html> 开头,它让浏览器进入标准模式。省略或使用某些旧式声明可能触发怪异模式,浏览器会为了兼容老网页采用不同的布局规则。它不是给页面“开启 HTML5 标签”的开关,也不是告诉浏览器用哪种字符编码;实际模式可以从 document.compatMode 检查。

前端进阶之旅 · 一题精讲更新于 2026.09.29
HTML#语义与文档
先看核心答案读代码示例
理解线索

DOCTYPE 选择文档兼容模式

  1. DOCTYPE放在文档开头,让现代页面按标准模式布局
  2. 标准模式可用 document.compatMode 检查,盒模型与旧模式不同
  3. 怪异模式旧兼容模式可能由缺失或特定旧声明触发

字符编码由响应头或 <meta charset> 等决定;DOCTYPE 主要影响文档模式。

核心回答

先记住这个答案

<!doctype html> 告诉浏览器用标准模式解析现代页面的布局行为,不写它可能进入怪异模式,盒模型等规则就会按兼容旧网页的方式计算。它本身不声明字符编码,也不是启用某批新标签的开关。排查“同一段 CSS 在旧页宽度不对”时,可先看页面开头和 document.compatMode。

  • <!doctype html> 触发标准模式
  • 缺失声明可能进入怪异模式
  • 它不声明字符编码
  • document.compatMode 可检查模式

旧活动页为何进入怪异模式

接手一张旧活动页,CSS 写着 width: 300px; padding: 20px,在不同页面里盒子宽度似乎不一致。先看文档第一行和浏览器模式:如果进入怪异模式,盒模型等布局行为可能按历史兼容规则处理。把 <!doctype html> 放到文档开头后,再依据标准盒模型修复样式。不要把怪异模式当成某个单独属性失效,它影响的是整页的渲染前提。

文档第一行的标准声明HTML
<!doctype html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>示例</title></head>
<body><main>标准模式页面</main></body>
</html>
<!-- 声明放在文档开头 -->

浏览器解析 HTML 时会根据文档类型声明选择兼容模式,常见有标准模式与怪异模式,历史声明还可能触发有限怪异模式。 示例把声明放在文件最开头,浏览器因此按标准模式处理后面的 HTML。这里的大小写不决定是否进入“HTML5 模式”;真正重要的是使用简洁、有效的现代 DOCTYPE。页面源码里若在它前面插入了不合适的内容,或引用了老式、会触发怪异模式的声明,就应通过浏览器实际的 document.compatMode 核实结果,而不是猜 CSS 哪一条坏了。

DOCTYPE 选择文档兼容模式

模式主要改变某些 CSS 布局兼容行为,不代表 HTML 解析器彻底换了一个。脚本可读取 document.compatMode:标准模式返回 CSS1Compat,怪异模式返回 BackCompat。声明应出现在文档开头,项目模板统一生成比每张页面手写更不容易遗漏。

怪异模式最容易在旧页面的盒模型和表格布局里暴露:同样的宽度声明,实际占用空间可能和标准模式下不一样。复制老活动页到新项目时,如果只拷贝 <body> 而漏掉文档开头声明,CSS 看上去没有变化却出现错位。先看 document.compatMode 是否为 CSS1Compat,再查覆盖样式,能避免在错误的兼容模式上不断打补丁。

回答前,多想一步

容易答错的地方

把 DOCTYPE 当成字符编码声明
字符编码由响应头或 <meta charset> 等决定;DOCTYPE 主要影响文档模式。
以为缺失只影响旧浏览器
现代浏览器仍保留怪异模式来兼容旧网页,新页面也应写标准声明。
试着用自己的话回答

面试官还会怎么问?

怎么在控制台确认当前模式?

读取 document.compatMode,CSS1Compat 表示标准模式,BackCompat 表示怪异模式。

写了 DOCTYPE 就一定没有布局差异吗?

不是。字体、视口、CSS 支持等仍可能造成差异;DOCTYPE 只排除兼容模式这一类原因。

大小写必须完全一致吗?

HTML 文档类型关键字不区分 ASCII 大小写,惯用简洁写法是 <!doctype html>。

从一道题,走向一组知识

把知识连起来

语义与文档

header、main、footer 各放什么?页面能有几个 main?

标准模式确定页面的布局前提,header、main、footer 再表达正文结构。

语义与文档

h1 到 h6 怎样组织页面标题才好读?

标题层级属于文档语义,不会因 DOCTYPE 改变,但怪异模式可能影响外观。

参考资料

  • Doctype

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 旧活动页为何进入怪异模式
  3. DOCTYPE 选择文档兼容模式
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑