<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签以前。html
<!DOCTYPE> 声明不是 HTML 标签;它是指示 web 浏览器关于页面使用哪一个 HTML 版本进行编写的指令。web
在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,由于 HTML 4.01 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。浏览器
HTML5 不基于 SGML,因此不须要引用 DTD。ruby
提示:请始终向 HTML 文档添加 <!DOCTYPE> 声明,这样浏览器才能获知文档类型。框架
经常使用的 DOCTYPE 声明布局
HTML 5ui
<!DOCTYPE html>
HTML 4.01 Strictspa
该 DTD 包含全部 HTML 元素和属性,但不包括展现性的和弃用的元素(好比 font)。不容许框架集(Framesets)。code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitionalhtm
该 DTD 包含全部 HTML 元素和属性,包括展现性的和弃用的元素(好比 font)。不容许框架集(Framesets)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
HTML 4.01 Frameset
该 DTD 等同于 HTML 4.01 Transitional,但容许框架集内容。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 Strict
该 DTD 包含全部 HTML 元素和属性,但不包括展现性的和弃用的元素(好比 font)。不容许框架集(Framesets)。必须以格式正确的 XML 来编写标记。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional
该 DTD 包含全部 HTML 元素和属性,包括展现性的和弃用的元素(好比 font)。不容许框架集(Framesets)。必须以格式正确的 XML 来编写标记。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset
该 DTD 等同于 XHTML 1.0 Transitional,但容许框架集内容。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1
该 DTD 等同于 XHTML 1.0 Strict,但容许添加模型(例如提供对东亚语系的 ruby 支持)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
怪异模式:仅在没有在文档首行添加!DOCTYPE声明的状况下会出现
脚本检测
能够经过document对象有个属性compatMode ,它有两个值:
“BackCompat” 对应怪异模式
“CSS1Compat” 对应标准模式
近似标准模式
近似标准模式(Almost Standards Mode)从字面意思上看与标准模式很是相似,但确实有小的差异。主要体如今对于表格单元格内垂直方向布局渲染差别。IE8 开始、Firefox、Chrome、Safari、Opera 7.5 开始,这些浏览器的标准模式更加严格的遵循了 CSS2.1 规范,故对于在目前看来不太“标准”的之前的标准模式,被赋予了“近似标准模式”的名字。可是在较早的 IE6 IE7 以及 Opera 7.5 以前版本中,浏览器没法严格遵循 CSS2.1 规范,故对于它们来讲没有这个近似标准模式,也能够理解为它们的近似标准模式就是标准模式。
到目前为止,能够看到各浏览器主要包含了三种模式。在 HTML5 草案中,更加明确的规定了模式的定义:
传统名称 |
HTML5 草案名称 |
document.compatMode 返回值 |
standards mode 或者 strict mode |
no-quirks mode |
CSS1Compat |
almost standards mode |
limited-quirks mode |
CSS1Compat |
quirks mode |
quirks mode |
BackCompat |