什么是!DOCTYPE的function?

我们经常看到<!DOCTYPE ...>如下:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> 

什么是!DOCTYPE的function?

DOCTYPE最重要的用途是在浏览器模式和标准模式之间切换 。

这个function是由于旧版IE中的“破坏”渲染而产生的。 人们意识到,如果微软“固定”IE浏览器渲染引擎,很多现有的网站将无法正常渲染。 所以它的工作方式是,如果你在你的页面中放置任何有效的DOCTYPE声明,那么假设你知道你在做什么,并且你的浏览器将以符合标准的方式呈现,如果你没有在其中放置一个会以旧的“错误”方式呈现。

这最初是在IE浏览器中为Mac完成的,但是自IE5以来的所有版本,以及Firefox,Chrome,Safari和Opera,这种行为都是一样的。

DOCTYPE 应该是一个文档types定义 。 HTML是SGML的子集(就像XML一样)。 DTD告诉parsing器你正在使用哪种语法。 因此,在网页中,您的DOCTYPE应该与您所使用的HTML版本相匹配。

它告诉validation程序你正在使用哪个版本的HTML。 浏览器使用这些信息来正确渲染页面。

这里是DOCTYPE的正确版本:

  • HTML 4.01严格,过渡,框架

     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> 
  • XHTML 1.0严格,过渡,框架

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

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
  • HTML5

     <!DOCTYPE html> 

它告诉您的浏览器正在加载哪个版本的HTML,因为浏览器知道期望什么,加载时间更快一些。

文档types是w3c定义的一个标准 – 当你听到基于标准的web开发时,这就是他们正在谈论的内容。 使用doctype的想法是创build遵循doctype的有效HTML。

如果你很聪明,你实际上可以写自己的文档types。

DOCTYPE的主要(实用)目的是迫使IE从“怪癖模式”到“标准兼容模式”,分别是“可怕的破碎模式”和“轻微破碎模式”的委婉语。