DOCTYPE的作用和类型详解
首先,介绍两个概念(SGML、DTD)
SGML是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源。它规定了在文档中嵌入描述标记的标准格式,指定了描述文档结构的标准方法,HTML格式就是使用固定标签集的以重SGML文档。
DTD(Document Type Definition 文档类型定义)是一组机器可读的规则,它定义XML或HTML元素及它们的属性和层次关系。浏览器根据你定义的DTD来解释你页面的表示,并展现出来。
什么是DOCTYPE?
声明一般位于文档的第一行,作用是告诉浏览器以什么样的模式来解析文档。在标准模式下,浏览器的解析规则都是按照最新的标准进行解析的。而在兼容模式下,浏览器会以向后兼容的方式来模拟老式浏览器的行为,以保证一些老的网站的正确访问。DOCTYPE声明的必要性
<!DOCTYPE>
声明的前面没有任何内容,如果有其他内容(除了空格),就会使浏览器在IE下开启怪异模式渲染网页。如果浏览器进入怪异模式,就会按自己的方式解析渲染页面。那么,在不同的浏览器下,显示的样式效果会不一致。如果不写文档DOCTYPE声明,浏览器将无法获知HTML或XHTML文档的类型,也会进入怪异模式;还有在IE6以下版本永远进入怪异模式。只要我们对文档DOCTYPE做了正确的声明,浏览器就会进入标准模式;浏览器会按照W3C的标准来解析渲染页面,那么,在所有的浏览器下,显示的样式效果会保持一致。
DOCTYPE常见声明类型
1、HTML5 <!DOCTYPE>声明—> eg:<!doctype html>
2、HTML4.01和XHTML1.0
HTML Strict DTD
如果需要干净的标记,免于表现层的混乱,可以使用此类型。与层叠样式表(CSS)配合使用:
DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” " http://www.w3.org/TR/html4/strict.dtd"
HTML Transitional DTD
Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 HTML 的呈现特性时,请使用此类型:
DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” " http://www.w3.org/TR/html4/loose.dtd"
Frameset DTD
Frameset DTD 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD:
DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN” " http://www.w3.org/TR/html4/frameset.dtd"
3、XHTML1.1规定了一种声明,等同于XHTML1.0的Strict,但允许添加框架集。
HTML5 为什么只需要写 ,而不需要引入 DTD?
HTML5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 DOCTYPE 来规范浏览器的行为(让浏览器按照它们应该的方式来运
行)。而 HTML4.01 基于 SGML ,所以需要对 DTD 进行引用,才能告知浏览器文档所使用的文档类型。