<!DOCTYPE> 标签的深度剖析以及使用选择
前言:
现在IE的版本不停地推陈出新,自己设备的网站在高版本的IE中总是表现的有些怪异,才实然发现DOCTYPE是个需要关注的东东。
<!DOCTYPE>的定义:
<!DOCTYPE>声明位于文档中的最前面的位置,处于<html>标签之前。此标签可告知浏览器文档使用哪种HTML或XHTML规范。<!DOCTYPE>对大小写不敏感。
该标签可声明三种DTD类型,分别表示严格版本、过渡版本以及基于框架的HTML版本。(假如文档中的标记不遵循doctype声明所指定的DTD,这个文档除了不能通过代码校验之外,还有可能无法在浏览器中正确显示。)
语法
HTML顶级元素可用性"注册//组织//类型标签//定义语言""系统标识符"
可能值
顶级元素:指定DTD中声明的顶级元素类型。这与声明的SGML文档类型相对应。HTML默认。HTML。
可用性:指定正式公开标识符(FPI)是可公开访问的对象还是系统资源。PUBLIC默认。可公开访问的对象。
系统标识符:第一对引号内的内容,为公共标识符,如果浏览器根据该标识符找不到定义,则根据系统标识符指示的位置(如本地文件或URL)来查找DTD,。
注册:指定组织是否由国际标准化组织(ISO)注册。+默认。组织名称已注册。-组织名称未注册。Internet工程任务组(IETF)和万维网协会(W3C)并非注册的ISO组织。
组织:指定表明负责由!DOCTYPE声明引用的DTD的创建和维护的团体或组织的名称,即OwnderID。IETFIETF。W3C。
类型:指定公开文本类,即所引用的对象类型。DTD默认。DTD。
标签:指定公开文本描述,即对所引用的公开文本的唯一描述性名称。后面可附带版本号。HTML默认。HTML。
定义:指定文档类型定义。Frameset框架集文档。Strict排除所有W3C专家希望逐步淘汰的代表性属性和元素,因为样式表已经很完善了。Transitional包含除frameSet元素的全部内容。
语言:指定公开文本语言,即用于创建所引用对象的自然语言编码系统。该语言定义已编写为ISO639语言代码(大写两个字母)。EN默认。英语。
URL:指定所引用对象的位置。
注释
此声明必须出现在文档的起始处,出现在html标签之前。
!DOCTYPE元素不需要关闭标签。
后面的系统标识符(指明DTD文档的位置)挺重要,不能省略,如省略会导致IE以Quirks(怪异)模式显示网页,具体差别请自行搜索Quirks该关键字。
<!DOCTYPE>的示例:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
解析:在上面的声明中,声明了文档的根元素是html,它在公共标识符被定义为"-//W3C//DTDXHTML1.0Strict//EN"的DTD中进行了定义。浏览器将明白如何寻找匹配此公共标识符的DTD。如果找不到,浏览器将使用公共标识符后面的URL作为寻找DTD的位置。
-:表示组织名称未注册。Internet工程任务组(IETF)和万维网协会(W3C)并非注册的ISO组织。
+为默认,表示组织名称已注册。
DTD:指定公开文本类,即所引用的对象类型。默认为DTD。
HTML:指定公开文本描述,即对所引用的公开文本的唯一描述性名称。后面可附带版本号。默认为HTML。
URL:指定所引用对象的位置。
Strict:排除所有W3C专家希望逐步淘汰的代表性属性和元素。
三种HTML文档类型:
HTML4.01规定了三种文档类型:Strict、Transitional以及Frameset。
a)如果需要干净的标记,免于表现层的混乱,用HTMLStrictDTD类型:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
b)TransitionalDTD可包含W3C所期望移入样式表的呈现属性和元素.如果用户使用了不支持层叠样式表(CSS)的浏览器以至于你不得不使用HTML的呈现特性时,用TransitionalDTD类型:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
c)FramesetDTD被用于带有框架的文档。除frameset元素取代了body元素之外,FramesetDTD等同于TransitionalDTD:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Frameset//EN""http://www.w3.org/TR/html4/frameset.dtd">
三种XML文档类型:
XHTML1.0规定了三种XML文档类型:Strict、Transitional以及Frameset。
a)如果需要干净的标记,免于表现层的混乱,用XHTMLStrictDTD类型:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
b)TransitionalDTD可包含W3C所期望移入样式表的呈现属性和元素.如果用户使用了不支持层叠样式表(CSS)的浏览器以至于你不得不使用HTML的呈现特性时,用TransitionalDTD类型:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
c)FramesetDTD被用于带有框架的文档。除frameset元素取代了body元素之外,FramesetDTD等同于TransitionalDTD:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Frameset//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<!doctypehtml>
<!doctypehtml>标明使用HTML5。因为HTML5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。
建议在以后都直接用“<!doctypehtml>”,用<!doctypehtml>的话就会开启浏览器的标准兼容模式,在标准兼容模式下,不能保证与其它版本(IE6之前的,直接忽略吧)的InternetExplorer保持兼容,文档的渲染行为也许与将来的InternetExplorer不同,但也请大家放心地使用吧~~