文档类型详解

首发地址:http://ieun.gitee.io/blog/pages/0db06d/

文档类型

再介绍文档类型之前,我们先来看下 HTML 文件的基本结构:

<!-- 文档类型 --> 
<!DOCTYPE html> 
<html>   
  <!-- 头部信息 --> 
  <head>   
    <!-- 编码 -->
    <meta charset="utf-8">     
    <title>我的测试站点</title> 
  </head> 
  <!-- 网页内容 --> 
  <body>     
    <p>这是我的页面</p> 
  </body>
</html>

其中 <!DOCTYPE html> 就是文档类型(Document Type Defination, DTD)声明。

HTML 来源于 SGML, SGML 用 DTD 来定义每一种文档类型。在 HTML5 出现之前,HTML 都是使用符合 SGML 规定的 DTD。这些复杂的 DTD 写法并没有什么实际作用(浏览器根本不会用 SGML 引擎解析它们)。因此,到了 HTML5,干脆放弃了 SGML 子集这项坚持,规定了一个简单的,大家都能记住的 DTD:<!DOCTYPE html>

<!DOCTYPE html> 必须声明在 HTML 文档的第一行

<!DOCTYPE html> 不是 HTML 标签,它是用来告诉浏览器使用哪种模式来渲染页面,以及使用什么规则来验证页面

<!DOCTYPE html> 告诉浏览器当前页面是使用哪个 HTML 版本编写的指令,浏览器会根据不同的 HTML 版本规则来校验页面。

文档模式

上面我们说 <!DOCTYPE html> 会告诉浏览器使用使用哪种模式来渲染页面,那么一共有几种文档模式呢?

目前浏览器的排版引擎有三种文档模式:

  • 怪异/混杂模式(Quirks mode):该模式是为了兼容很早之前针对旧版本浏览器的设计,并未严格遵循 W3C 标准而产生的一种页面渲染模式,浏览器用自己的方式解析代码。排版会模拟 Navigator 4 与 Internet Explorer 5 的非标准行为渲染页面;
  • 接近标准模式(Almost standards mode):相较怪异模式,只有少数的怪异行为;
  • 标准/严格模式(Standards mode):该模式严格按照 W3C 规定的 HTML 与 CSS 标准来渲染页面;

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

这几种模式的区别主要是会影响 CSS 内容的呈现,但在某些情况下也会影响到 JavaScript 的解释执行。

声明 <!DOCTYPE html> ,浏览器会默认开启标准模式;否则,部分浏览器会使用混杂模式渲染页面(有些浏览器仍会按照标准模式来解析)。

[附录]H5前常用的DOCTYPE声明

HTML 4.01 Strict

该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0 Strict

该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset

该 DTD 等同于 XHTML 1.0 Transitional,但允许框架集内容。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1

该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的 ruby 支持)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值