• home > webfront > SGML > html >

    Doctype是什么?如何触发严格模式与混杂模式模式?区分它们

    Author:zhoulujun@live.cn Date:

    Doctype是document type(文档类型)的简写,是用来说明所用的XHTML或HTML是什么版本的。XHTML1 0 提供了三种DTD声明可供选择,分别是:​strict,frameset,tranisitional

    Doctype是document type(文档类型)的简写,是用来说明所用的XHTML或HTML是什么版本的。XHTML1.0 提供了三种DTD声明可供选择,分别是:strict,frameset,tranisitional

    模式的由来:

    当浏览器厂商开始创建与标准兼容的浏览器时,他们希望确保向后兼容性。为了实现这一点,他们创建了两种呈现模式:标准模式和混杂模式(quirks mode)。在标准模式中,浏览器根据规范呈现页面;在混杂模式中,页面以一种比较宽松的向后兼容的方式显示。混杂模式通常模拟老式浏览器的行为以防止老站点无法工作。

    所以浏览器需要提供两种模式:怪异模式(即兼容模式)服务于旧式规则,严格模式服务于标准规则。

    Mozilla和Safari还有第三种模式,称为”几乎标准的模式(almost standards mode)”,除了在处理表格的方式上有一些细微的差异之外,这种模式与标准模式相同。

    模式差异

    对于模式之间的差异,最显著的一个例子与Windows上IE专有的盒模型有关。在IE 6出现时,在标准模式中使用的是正确的盒模型,在混杂模式中使用的则是老式的专有盒模型。为了维持对IE 5和更低版本的向后兼容性,Opera 7和更高版本也在混杂模式中使用有缺点的IE盒模型。

    呈现方面的其他差异比较小,而且是与特定浏览器相关的,包括对于十六进制颜色值不需要#号、假设CSS中没有指定单位的长度的单位是像素,以及在使用关键字时将字号增加一级。

    声明模式如何触发这些模式:

    定义成相应的声明就可以触发相应的模式。任何新的或未知的DOCTYPE将触发严格模式。

    1、过渡的(Transitional,也叫混杂模式):要求比较宽松,允许继续使用HTML4.01的标识,完整声明为

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

      2、严格的(Strict):要求严格的DTD,不能使用任何表现层的标识和属性,完整声明为

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

      3、框架的(Frameset):专门针对框架页面设计使用的DTD,如果页面中包含有框架,可以采用DTD,完整声明为

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

    blob.png



    转载本站文章《Doctype是什么?如何触发严格模式与混杂模式模式?区分它们》,
    请注明出处:https://www.zhoulujun.cn/html/webfront/SGML/htmlBase/2016_0408_7747.html