Doctype 是干吗用的?为什么只需要写
<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前。
解析:
doctype 是一种标准通用标记语言的文档类型声明,目的是告诉标准通用标记语言解析器要使用什么样的文档类型定义(DTD)来解析文档。
<!DOCTYPE> 声明是用来指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。
<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前。
浏览器本身分为两种模式,一种是标准模式,一种是怪异模式,浏览器通过 doctype 来区分这两种模式。
doctype 在 html 中的作用就是触发浏览器的标准模式,如果 html 中省略了 doctype,浏览器就会进入到 Quirks 模式的怪异状态,在这种模式下,有些样式会和标准模式存在差异,而 html 标准和 dom 标准值规定了标准模式下的行为,没有对怪异模式做出规定,因此不同浏览器在怪异模式下的处理也是不同的,所以一定要在 html 开头使用 doctype。
HTML5 为什么只需要写
HTML 4.01 中的 doctype 需要对 DTD 进行引用,因为 HTML 4.01 基于 SGML。而 HTML 5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器的行为。
其中,SGML 是标准通用标记语言,简单地说,就是比 HTML、XML 更老的标准,这两者都是由 SGML 发展而来的。HTML5 不是的。
<!DOCTYPE> 声明位于 HTML 文档中的第一行,处于 <html> 标签之前。作用:告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE 不存在或格式不正确会导致文档以怪异模式呈现。
补充
补充:HTML5 把 doctype 简化为一行
<!DOCTYPE html>,背后其实是因为它不再基于 SGML,不再需要 DTD。
历史背景
- HTML 4.01 基于 SGML,因此需要通过 doctype 引用 DTD 来告诉浏览器语法规则
- HTML5 不再基于 SGML,自定义语法规则,因此只需要 doctype 这个"切换标准模式"的开关
- 不同大小写、属性有无都不影响:浏览器只看"页面最前面是不是一个
<!DOCTYPE>字符串"
来源整理自:我的有道云笔记



