关于浏览器模式,一直以来的理解是这样的:浏览器厂商出于那些老站点的向后兼容的目的,创建了两种模式。即标准模式(standards mode)和怪异模式(quirks mode)。在标准模式里,浏览器按照规范渲染页面,而在怪异模式里,浏览器以一种老式的或者是模拟老式浏览器的渲染方式表现页面。
这些并没有错,但是还不够全面和深入。当我回顾《CSS Mastery》的时候,也让我想起了很多渐渐淡忘的、并且也可能是无关紧要的其他碎片。
比如,两种模式最大的差异的例子就是IE盒模型的解释。IE如此,Opera 7也是如此。再比如,Mozilla和Safari的第三种“准标准模式(almost standards mode)”,只是在处理表格的方式上有些细微的差异,其他与标准模式无异。等等。
一直以来,确保DOCTYPE的正确也是非常重要的事。浏览器根据DOCTYPE是否存在以及是何种DOCTYPE来确定渲染方式。如果总结如表,应该是这个样子。
| DOCTYPE | MODE |
|---|---|
| XHML + 形式完整DOCTYPE | 标准模式 |
| HTML 4.01 + strict DTD | 标准模式 |
| DOCTYPE包含URL和transitional DTD | 标准模式 |
| DOCTYPE只包含transitional DTD | 怪异模式 |
| DOCTYPE不存在或形式不完整 | 怪异模式 |
这张由我根据《CSS Mastery》一书所列出的表并不怎么完整,Alastair Campbell有一个更加全面的关于IE浏览器模式和DOCTYPE的表格。
另外一个可能有点过时的,是Eric Meyer关于DOCTYPE switching的表格。多年之后我再去看这个链接的时候,发觉它居然还在:)
而现在,我更喜欢看QuirksMode上的资料。