1. doctype是什么

doctype标签 用来指定document的dtd(Document Type Definition)的,写在每个html的最前面,形如:

<!DOCTYPE RootElement Availability “URI” [declarations]>

如几种常见的doctype:

  • HTML 4.01: Strict<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
  • HTML 4.01 Transitional<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
  • XHTML 1.1 Strict DTD<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>

2. doctype能做什么

有没有指定doctype, 以及指定不同的doctype都会激活不同的浏览器模式,从而产生对一些对html,css和js的影响,其中最著名的就是所谓的盒模型问题。

2.1   为什么会有多种模式

在很久很久以前还是netscape和ie争霸天下的时代,由于太强大了,浏览器模式是由浏览器自己说了算的。时光流逝,转眼到了战国群雄的时 代,大家发现如果都自己说了算的话天下就乱套了,就商量说推举个盟主吧,于是w3c就上台了。但是问题又来了,譬如IE,虽说再不能一头独大,向标准看齐 是大势所趋,但是假如浏览器只支持标准的话,之前的许多页面又会产生一些问题。

于是doctype应运而生,假如没有指定任何doctype,就采用原先的模式,被称为怪癖模式(Quirks Mode),假如指定了doctype,就遵循标准,被称为标准模式或严格模式(Standards Mode)。期间,以Mozilla为代表的几位,觉得标准模式里诸如img的解析不是很合适,就保留了一些个人意见,在指定一些特定的doctype情 况下,会采用一种准标准模式(Almost Standards Mode),具体情况请参考Activating Browser Modes with Doctype,或译文用doctype激活浏览器模式。

2.2   不同模式的具体影响

ppk大牛已经给我们 做了很好的总结,Quirks mode and strict mode。

 

quirks模式:在quirks模式下采用的是传统盒子模型,元素可在html,body不设置高100%下,设置成高100%

              在quirks模式下采用的是标准盒子模型,元素可在html,body不设置高100%下,设置成高100%

strict模式:ie6和FF在strict模式下盒子模型均为标准盒子模型,元素需要再html,body设成高100%时才能设置成高100%