当年美国网景公司生产的Netscape4和微软的IE4在实现CSS机制时并没有遵循W3C提出的标准。Netscape4提供了糟糕的支持,而IE4虽然接近标准,但依旧未能完全正确地支持标准。尽管IE5修复了许多IE4的问题,但是依然延续CSS实现中的其他故障(主要是盒模型问题)。为了保障自己的网站在各个浏览器上显示正确,网页开发者们不得不依据各个浏览器自身的规范来使用CSS,因此大部分网站的CSS实现并不符合W3C规范的标准。然而随着标准一致性越来越重要,浏览器开发商不得不面临一个艰难的抉择:逐渐追寻W3C的标准是前进的方向。但是改变现有的CSS,完全去遵循标准会使得很多旧的网站或多或少受到破坏,如果浏览器突然以正确的方式解析现存的CSS,陈旧的网站的显示必然会受到影响。所以,所有的浏览器都需要提供两种模式:混杂模式服务于旧式规则,严格模式服务于标准规则。
1、严格模式与混杂模式的定义:
严格模式(标准模式):指浏览器按照W3C标准解析代码;也即浏览器以其支持的最高标准呈现页面。
混杂模式(兼容模式,怪异模式):指浏览器用自己的方式解析代码;页面以一种比较宽松的向后兼容的方式显示。
2、Doctype(document type 文档类型的简写)
声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该文件的类型。让浏览器解析器知道应该用哪个规范来解析文档。
声明必须在 HTML 文档的第一行,这并不是一个 HTML 标签。
3、DTD(Document Type Definition)的常用声明方式:
(1)HTML4.01(3种)
严格模式包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font),不允许框架集(Framesets);过渡模式包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font),不允许框架集(Framesets);框架模式等同于过渡模式,但允许框架集内容。
【1】HTML 4.01 Strict :
"http://www.w3.org/TR/html4/strict.dtd">
【2】HTML 4.01 Transitional :
"http://www.w3.org/TR/html4/loose.dtd">
【3】HTML 4.01 Frameset :
"http://www.w3.org/TR/html4/frameset.dtd">
(2)XHTML 1.0(4种)
【1】过渡的(Transitional)
是要求非常宽松的DTD,一般的情况下网页中会使用这个,它允许你继续使用HTML4.01的标识(但是要符合XHTML的写法)。
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
【2】严格的(Strict)
要求严格的DTD,对页面的标签使用非常严格,页面里几乎不准使用inline-style的CSS样式。
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
【3】框架的(Frameset)
专门针对框架页面设计使用的DTD,以前的Table满街走的年代很流行这种DTD,如果你的页面中包含有框架,需要采用这种DTD。
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd" >
【4】XHTML 1.1 该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型。
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
(3)适用于手机浏览器的
如果是移动端开发,可以用到这个。
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd" >
(4)HTML5