HTML Standard入门答疑:DOCTYPE到底写什么、为什么标准没有版本号?8个高频疑问一次讲透
2026/9/19 18:06:47 网站建设 项目流程

HTML Standard入门答疑:DOCTYPE到底写什么、为什么标准没有版本号?8个高频疑问一次讲透

【免费下载链接】htmlHTML Standard项目地址: https://gitcode.com/gh_mirrors/ht/html

👋 如果你刚接触HTML Standard(HTML 标准),大概率被两个问题卡住过:第一行的DOCTYPE 到底该写什么?为什么这套标准永远没有版本号?本文基于仓库内的官方答疑文档 FAQ.md 和 16 万行标准源文件 source,把新手最常问的 8 个疑问一次讲透,无需任何前置知识。


一、DOCTYPE 唯一正确的写法

现代text/html文档,只需要这一行:

<!DOCTYPE html>

就这么简单。官方答疑 FAQ.md#L102-L130 解释了为什么选它:

  • 短、好记,鼓励所有人统一使用;
  • 能触发所有主流浏览器(包括老浏览器)的标准模式
  • 故意不包含任何版本标识,所以无论 HTML 未来怎么演进,它永远有效——这正是"标准没有版本号"的呼应;
  • text/html中它大小写不敏感,但推荐就按上面这种写法,避免<DOCTYPE HTML>之类的变体。

💡 仓库里的示例页面也是这么写的,比如 demos/workers/modules/page.html 第一行就是<!DOCTYPE html>

两个补充场景:

场景写法
旧式生成工具无法输出标准 DOCTYPE<!DOCTYPE html SYSTEM "about:legacy-compat">(仅限遗留工具,非给旧浏览器用)
以 XML 媒体类型(如application/xhtml+xml)发送的文档不需要DOCTYPE,写了也行

二、为什么 HTML 标准没有版本号?

这是新手最大的困惑:W3C 时代有 HTML4、HTML5 这些版本,现在为什么没了?

答案两个字:活(Living)标准

WHATWG 采用的开发模式是"持续维护、永不定稿":

  1. 浏览器实际都跟随最新版标准,而不是某个"已定稿"的快照;
  2. 快照有个致命问题——你追的是"已知有错"的内容:错误在被发现后修正于编辑稿中,而实现者却去实现了包含这些 bug 的旧快照,最终导致浏览器之间出现严重分歧;
  3. 没有版本号 ≠ 不稳定。FAQ.md#L19-L21 明确说:整个标准大体都是稳定的,新增内容必须设计成熟、且至少有两个实现者支持才能进入。

一句话总结:🌱 与其给你一张"会过期的地图",不如给你一根"永远最新的指南针"。

三、HTML5 和 HTML 标准是什么关系?

简短回答:是的,它就是大家说的"HTML5"。

标准原文的说法是(FAQ.md#L11-L13):WHATWG 现在只维护"HTML",不再纠结版本号;当人们说"HTML5"时,通常指**"当前最新的 HTML 工作成果"**,而不是某个具体版本。

而且 HTML 标准远不止"标记语法"——它还定义了 Web 运行时的许多核心能力,比如媒体流(<video>的摄像头流采集与分发):

上图来自标准正文:HTML 标准如何定义摄像头/麦克风采集的LocalMediaStream流向<video>PeerConnection

四、我的老页面会因此"失效"吗?

不会,也不用担心。两点澄清:

  1. 浏览器只有一套解析器,同时覆盖所有历史版本。带 HTML4、XHTML1 甚至没有 DOCTYPE 的text/html文档,都用同一套解析算法处理(FAQ.md#L141-L145),不需要为每个旧版本单独写解析器——这对安全和维护都是好事。
  2. "合法性(conformance)"只是质量工具,用来帮你在新页面中避免拼写错误和坏实践,而不是给旧页面"判刑"(FAQ.md#L37-L41)。

所以:写新页面时建议对照最新规则校验;老页面则完全不必为"合不合法"焦虑。

五、没有 DTD 了,页面怎么校验?

早期 HTML 靠 DOCTYPE 引用 DTD 来校验,现在 DOCTYPE 只是个"模式切换开关",不带 DTD。

官方答案(FAQ.md#L147-L149):使用遵循最新规范的 HTML 校验器(validator)。校验器内部按最新规范实现检查逻辑,不需要 DTD 参与。

六、百年后的浏览器还能打开老 HTML 吗?

能,这正是标准的头号目标之一。

FAQ.md#L31-L35 写得很浪漫:HTML 标准的目标是"让几百年后的考古学家也能写出浏览器,并浏览任何年代写的 HTML"。没有版本号反而让这件事更容易——浏览器只需要实现"一套覆盖所有版本的规则",而不是 N 套互不兼容的版本。

标准对浏览器行为的定义细到令人发指,连键盘焦点如何移动、焦点顺序如何从焦点树推导都有明确规定:

上图是标准正文中的焦点树示意:数字标号表示焦点的候选与分配路径,帮助浏览器实现者精确对齐行为。

七、某个新特性我到底能不能用?

标准里"有"≠ 浏览器里"都能用"。官方推荐用实现状态查询工具来判断(FAQ.md#L57-L69):

  • 浏览器兼容性查询表(caniuse)
  • MDN Web Docs(各浏览器支持情况一目了然)

💡 经验法则:查不到"全绿"的特性,上线前加降级方案(fallback)

八、标准文档有几种"读法"?

HTML 标准提供三种形式(FAQ.md#L51-L53):

形式特点适合谁
单页版一页读完(⚠️ 非常巨大)搜索党
多页版(multi-page)按章节拆分按需精读
开发者版(dev edition)自动剔除浏览器厂商才关心的细节👍 新手首选

本仓库就是这套标准的托管仓库:source 是唯一的权威源文件,经构建工具处理生成上述各版本页面;dev/search.js 提供页内搜索,dev/styles.css 与 styles.css 负责渲染样式。

附:想动手体验?仓库自带 Demo

除了标准文本,仓库还有一批可交互示例 demos/,例如在 demos/workers/modules/page.html 里,你可以输入图片 URL(内置了一张机器人示例图)、选择滤镜,观察 Web Worker 在后台线程解码图片的全过程:

相关代码:worker.js 负责解码逻辑。类似的还有 demos/canvas/ 的 Canvas 示例、demos/workers/primes/ 的多线程质数计算等——读标准累了,跑个 demo 是最好的休息 😄


📌 小结(8 问速查):

  1. DOCTYPE 写<!DOCTYPE html>,别无选择;
  2. 没有版本号是因为 Living Standard 模式,追快照反而追到 bug;
  3. "HTML5" = 当前最新的 HTML 成果;
  4. 老页面不会失效,浏览器一套解析通吃所有版本;
  5. 校验用遵循最新规范的 validator,不需要 DTD;
  6. 百年后的浏览器也要能打开老 HTML——这是核心目标;
  7. 特性能不能用,查兼容性表 + MDN;
  8. 新手读"开发者版"最省力,想贡献就从 FAQ.md 这类文档读起。

【免费下载链接】htmlHTML Standard项目地址: https://gitcode.com/gh_mirrors/ht/html

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询