Doctype介绍

The Doctype(文档类型)

从页面的最头部开始

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

这部分被称为"doctype".这里有一段源远流长的历史,同时也是doctype背后的黑暗史.正当微软为Mac开发IE5的时候,他们自己发现了一个令人惊奇的问题: 即将到来的这个浏览器在标准化上面提升了太多了,导致了原来在早期版本能够表现正常的页面现在在这个页面无法正确渲染了.事实上,Mac版本的IE5的渲染行为是正确的,只不过人们期待它不要正确的渲染,原因是这些页面是专门针对于诸如Netscape4和IE4这些主流浏览器而设计的,而这些主流浏览器标准化做得都不好.因此只能说Mac版本的IE5太前卫了,它甚至破坏了整个web.

Microsoft后来想到了一个解决办法。 在渲染整个页面的时候,Mac版的IE5会首先查看位于页面源代码第一行为止的"doctype"申明。早期的一些页面(依赖早期浏览器奇怪的渲染机制)都没有doctype这个声明,因此Mac版本的IE5在渲染这些页面的时候就用原来的奇怪的方式去渲染。为了使自己的页面能够支持这一新的标准,开发者不得不在他们的页面中加入doctype这一申明。

Microsoft这种解决办法一下子像野火一样蔓延开来,很快所有的主流浏览器一夜之间都有了两种模式:“quicks mode”(早期奇怪的渲染模式)和“standards mode”(goddy加:以下我赞称两种模式为:诡异模式和标准模式)。当然了,这样的事情对于在Web领域,一下子就失去了控制。正当Mozilla 准备将他们的浏览器迁移到1.1版本的时候,他们发现很多依赖诡异模式下其中一种特定渲染行为的页面正在标准模式下被渲染。于是Mozilla修复了他的渲染引擎去除了诡异模式,这样一来,成千上万的页面一下子全部“崩溃”了(无法正确渲染)。 而Mozilla也提出了一种新的模式——“almost standard mode”。

利用 doctype来激活浏览器模式一文中,Henri Sivonen 总结了浏览器不同的渲染模式:

  1. Quicks Mode(诡异模式)
    在该模式下,浏览器无视当时的Web标准以使得让那些按照20世纪90年代后期比较流行的实践来实现的页面能够正确的被渲染。
  2. Standards Mode(标准模式)
    在该模式下,浏览器会试着去遵守标准来渲染页面。HTML5把这种模式称为:“no quirks mode”。
  3. Almost Standards Mode(近标准模式)
    Firfox、Safari、Chrome、Opera(7.5开始)和IE8也有这种模式,这种模式下实现了传统的table cells的垂直拉伸但有没有严格的遵守CSS2的标准。HTML5把这种模式称为:“limited quirks mode”

我们说道哪里了?噢,对了,dotype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

这种doctype申明是15 种能够触发“标准模式”的其中之一。这个申明一点都没错,如果你喜欢这样的申明,你可以保留着。或者你可以把它变成一种HTML5式的更简短更优雅并且同样也能触发“标准模式”的申明

以下是HTML5式的 doctype申明:

 <!DOCTYPE html>

就是这样,才15个字符。注意:你的doctype的申明需要出现在你html文件的第一行。 如果有其他甚至一个空行在这一申明之前,那么某些浏览器会认为你doctype申明无效,而一旦你的页面没有doctype声明,那么浏览器会按照“诡异模式”来渲染你的页面。这种错误是很难被发现的。

 

原文:http://diveintohtml5.org/semantics.html

翻译:澄净

XeonWell Studio