【HTML】文档声明

125 阅读2分钟

文档声明

HTML文档通常以文档声明开始,该声明的作用是帮助(告知)浏览器确定其尝试解析和显示的HTML文档类型。

<!DOCTYPE html>

文档声明必须是HTML文档的第一行、且顶格显示,对大小写不敏感。因为任何放在DOCTYPE前面的东西,比如批注或XML声明,会令IE9或更早期的浏览器触发怪异模式。

以上就是最新的 HTML5 的文档类型声明。

不需要引入 DTD 声明,因为该版本不再基于 SGML 了。

image.png

现在国内常说的 H5 开发,实际上是 HTML5 与 CSS3 及 ES6 的一个组合。

渲染模式

浏览器的渲染模式分为 3 种:

  • 怪异模式(混杂模式 / 兼容模式):浏览器用自己的方式解析代码
  • 严格模式(标椎模式):浏览器按照 W3C(万维网联盟,提出标准的组织,发展 Web 规范) 标准解析代码
  • 集合标准模式

浏览器使用文档开头的 DOCTYPE 来决定用何种模式处理。

如果没有 DOCTYPE 将触发文档的怪异模式,最明显的影响就是触发怪异盒模型。

在DOCTYPE声明中,没有使用DTD声明或者使用HTML4以下的DTD声明时,基本所有的浏览器都是使用怪异模式呈现,其他的则使用标准模式解析。

如何区分浏览器在解析时使用严格模式还是混杂模式:

  1. 严格 DTD (文档包含严格的 DOCTYPE) -- 严格模式
  2. 有 url 过渡的 dtd -- 严格模式;没有 url 过渡的 dtd -- 混杂模式
  3. dtd 不存在或者格式不正确 -- 混杂模式
  4. html5 没有严格和混杂之分(因为没有 dtd)

严格模式和怪异模式的部分渲染区别:

  1. 怪异模型的盒模型的宽高包含 padding 和 border,而严格模式只包含 content
  2. 怪异模式可以设置行内元素的宽高
  3. 怪异模式可以设置百分比的高度;标准模式元素的高度是由其包含的内容来决定的
  4. 怪异模式用 margin:0 auto; 设置水平居中在 IE 下会失效
  5. 怪异模式下设置图片 的 padding 会失效
  6. 怪异模式下 table 中的字体属性不能继承上层的设置
  7. 怪异模式下 white-space: pre; 会失效

意义:严格模式与混杂模式存在的意义与其来源密切相关,如果说只存在严格模式,那么许多旧网站必然受到影响;如果只存在混杂模式,那么会回到当时浏览器大战时的混乱,每个浏览器都有自己的解析模式。