HTML:
XHTML:
声明位于文档中的最前面的位置,处于标签之前,声明不是HTML标签,它只是告知浏览器该文档使用哪种HTML(HyperText Markup Language 超文本标记语言)或XHTML(Extensible HyperText Markup Language 可扩展超文本标记语言)规范(所有浏览器都支持)。因为浏览器必须在解析HTML文档正文之前就确定当前文档的类型,以决定其需要采用的渲染模式。因为不同的渲染模式会影响到浏览器对于CSS代码甚至JavaScript脚本的解析,所以一定要给HTML文档添加声明。
小提示:声明没有结束标签而且对大小写不敏感。因为HTML语法较松散,HTML也会慢慢向XML(Extensible Markup Language 可扩展标记语言)转变,XHTML是为过渡而产生的,在XHTML中DOCTYPE还是需要大写所以建议大写(DOCTYPE)。在HTML4.01中,声明引用DTD(Document Type Declaration 文档类型声明),因为HTML4.01基于SGML(Standard Generalized Markup Language 标准通用标记语言),DTD规定了标记语言的规则,这样浏览器才能正确地呈现内容。而HTML5不基于SGML,所以不需要引用DTD。
小知识:是HTML5唯一的标准网页声明,全称为Document Type HyperText Markup Language,意思是:文档种类为超文本标记性语言。现在是这个简洁形式,支持HTML5标准的主流浏览器都认识这个声明,表示网页采用HTML5,现在最好采用h5声明,因为它所触发的模式与严格型HTML或严格型XHTML所触发的模式完全相同,代码也相比较简洁许多,也是进入HTML5时代(Forwards Compatibility 向前兼容,Forwards有未来的意思,就是向未来兼容)。
的重要性:声明文档的解析类型(document.compatMode),避免浏览器的怪异模式,现在基本上不存在怪异模式解析,其实为了兼容以前旧网站(Backwards Compatibility 向后兼容,Backwards有回退的意思,就是向过去兼容)。解析类型有两种:
Quirks mode-怪异模式、混杂模式(document.compatMode=BackCompat),浏览器使用自己的怪异模式解析渲染页面(目的是向后兼容),浏览器都按照自己的方式解析渲染页面,那在不同的浏览器就会显示不同的样式(无声明 以HTML5为例)。Strict/Standards mode-标准模式、严格模式(document.compatMode=CSS1Compat),浏览器使用W3C的标准解析渲染页面(有声明 以HTML5为例) 。
浏览器都支持两种解析模式,在旧的、没有采用W3C标准的网页中,使用怪异模式解析,可以使页面正常显示;在声明采用标准模式的网页中,使用标准模式解析,可以让页面使用W3C的标准特性(js判断页面解析方式:document.compatMode=="CSS1Compat"或"BackCompat")。
两种解析模式的区别(这里说明怪异模式):
盒模型的宽高包含内边距padding和边框border:IE5.5及以下的浏览器及其他版本的Quirks mode下,IE的宽度和高度还包含了padding和border。可以设置内联元素的宽高:span等内联元素设置wdith和height会生效。可设置百分比的高度:父元素无高度,子元素设置百分比会生效。margin:0 auto设置块级元素水平居中在IE下会失效:margin:0 auto;在quirks模式下却会失效,但可以使用text-align:center;来实现块级元素居中。图片的padding会失效。inline元素和table-cell元素的vertical-align:bottom:table单元格中的图片的vertical-align属性默认取值为bottom,因此在图片底部会有及像素的空间。Table中的字体属性不能继承上层的设置。white-space:pre会失效。元素溢出的处理:溢出会被当做扩展box来对待,即元素的大小由其内容决定,溢出不会裁减,元素框自动调整,包含溢出内容。
小扩展:XML用来描述数据,而HTML则用来显示数据。XHTML是HTML与XML的结合物,它包含了所有与XML语法结合的HTML4.01元素,它是更严谨更纯净的HTML版本。XHTML元素必须被正确地嵌套;必须被关闭;标签名必须用小写字母;文档必须拥有根元素。XML是一种标记性语言,其中所有的东西都要被正确的标记,以产生形式良好的文档,它是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
如果你的文档在服务器是以"text/html"的方式来提供的(大部分文档是这种形式),那么你就应该声明为HTML;如果你的文档声明为XHTML,那么你应该以"application/html xml"的方式来提供。
本文英文缩写以及翻译:
HyperText Markup Language 超文本标记语言HTMLExtensible HyperText Markup Language 可扩展超文本标记语言XHTMLExtensible Markup Language 可扩展标记语言XMLDocument Type Declaration 文档类型声明DTDStandard Generalized Markup Language 标准通用标记语言SGMLdocument.compatMode 文档的解析类型Quirks mode 怪异模式Strict/Standards mode 严格/标准模式
如有错误或遗漏的,请在评论中指出!
举报/反馈