Doctype文档声明的严格模式和混杂模式,如何触发这两种模式,区分它们有何意义?

(1)如何触发两种模式:
加入xml头部声明,可以触发IE浏览器的Quirks mode,触发之后,浏览器解析方式就和IE5.5一样,拥有IE5.5一样的bug和其他问题,行为(Javascript)也是如此。
          
(2)IE6的触发:在XHTML的DOCTYPE前加入XML声明,
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

(3)IE7的触发:在XML声明和XHTML的DOCTYPE之间,加入HTML注释 
<?xml version="1.0" encoding="utf-8"?>
<!-- ... and keep IE7 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

(4)IE6和IE7都可以触发的:在HTML4.01的DOCTYPE文档头部,加入HTML注释
<!-- quirks mode -->  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

(5)在页面顶部加 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ,将触发“怪异模式”

(6)没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本上所有的浏览器都是使用quirks mode呈现

如何判定现在是标准模式,还是怪异模式:

方法如下,执行代码
alert(window.top.document.compatMode) ;
//BackCompat  表示怪异模式
//CSS1Compat  表示标准模式

意义:

各个浏览器的混杂模式,基本就是各个浏览器的私有模式,不相互兼容。
所以,除非是为了兼容的问题,比如你不想修改很久很久以前做的IE ONLY的网页,否则,刻意触发混杂模式没有任何意义。

区分是标准模式还是混合模式,有其重要的意义所在,那就是确定页面解析时,使用的是“标准盒Box模型“,还是使用“传统Box模型“。

在mozilla firefox 和 IE中的BOX模型

其解释中,因不一致导致相差2px的宽度,其解决方法:
div{
    margin:30px!important;
    margin:28px;
}
注意这两个margin的顺序一定不能写反,!important这个属性IE6不能识别,但IE7能识别,且IE8属于标准浏览器类型;故也支持。别的浏览器可以识别。所以在IE6下其实解释成这样:
div{
  margin:30px;
  margin:28px
}
重复定义的话按照最后一个来执行。

IE5 和IE6的BOX解释不一致

IE5下div{width:300px;margin:0 10px 0 10px;}
div的宽度会被解释为300px-10px(右填充)-10px(左填充),最终div的宽度为280px,

而在IE6和其他浏览器上,div宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。

这时我们可以做如下修改
div{
    width:300px!important; 
    width /**/:340px;
    margin:0 10px 0 10px
}

关于这个/**/是什么?也不太明白,只知道IE5和firefox都支持,但IE6不支持。

时间: 2024-12-26 08:14:48

Doctype文档声明的严格模式和混杂模式,如何触发这两种模式,区分它们有何意义?的相关文章

如何理解DocType? 什么是严格模式与混杂模式?如何触发这两种模式?

1.Doctype声明位于文档中的最前面的位置,处于标签之前,此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范,该标签可声明三种DTD 类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档.2.当浏览器厂商开始创建与标准兼容的浏览器时,为了确保向后兼容性,他们把浏览器的工作模式(渲染模式)分为标准模式和混杂模式.在标准模式中,浏览器根据规范呈现页面:在混杂模式中,页面以一种比较宽松的向后兼容的方式显示,混杂模式通常模拟老式浏览器的行为以防止老站点无法工作.3.如何触发这两

Doctype 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

Doctype:(Document Type)文档类型,它位于文档中最前面的位置,处于标签之前.如果你想制作符合标准的页面,一个必不可少的关键组成部分就是DOCTYPE的声明.确定了正确的Doctype,xhtml里面的标识和css才能正常生效(也就是说它会很负责地告诉浏览器怎么解释你的这个标签和你写的css).既然它是一种声明,它的责任就是告诉浏览器文档使用哪种html或者xhtml规范.为了获取正确的Doctype声明,关键就是让dtd与文档所遵循的标准对应.例如:假定文档遵循的是xhtml

DOCTYPE 文档类型声明

DOCTYPE声明文档类型,以便验证文档是否符合文档类型定义(DTD),同时指定了浏览器关于页面使用哪个HTML版本进行编写的指令.开发人员在编写完html代码后,要进行有效性验证.w3c提供了一个验证文档有效性的在线服务:http://validator.w3.org/. DOCTYPE声明不是html标签,必须放在html文档的第一行,而且绝不能在它之前添加xml声明语句,否则在IE6会触发怪异模式.在HTML 4.0中,DOCTYPE引用了DTD,因为HTML 4.0基于SGML.DTD规

ThinkPHP教程_PHP框架之ThinkPHP(二)【URL路径访问与模块控制器、URL四种模式、PATHINFO的两种模式、模板与控制器之间的关系】

一.URL路径访问与模块控制器 URL 模块(控制器) 动作(方法) 即以上三者之间的关系URL:http://127.0.0.1/projectName/index.php/模块/动作 1.ThinkPHP规定,两点 ·第一.所有的主入口文件默认访问index控制器(模块) ·第二.所有的控制器默认执行index方法(动作) 特别强调一下,以上两点是独立的!也就是说"所有的主入口文件默认访问index控制器,并执行默认执行index方法"是不准确的 那么,http://127.0.0

HTML文档声明

前面的话 ??HTML文档通常以类型声明开始,该声明将帮助浏览器确定其尝试解析和显示的HTML文档类型.本文将详细介绍文档声明DOCTYPE 特点 ??文档声明必须是HTML文档的第一行.且顶格显示,对大小写不敏感.因为任何放在DOCTYPE前面的东西,比如批注或XML声明,会令IE9或更早期的浏览器触发怪异模式(后面的渲染模式会介绍) ??由于文档类型声明不是标签,因此不应具有关闭标签 版本 版本 年份 HTML 1991 HTML+ 1993 HTML 2.0 1995 HTML 3.2 1

文档声明和html样式表

文档声明 不是注释也不是元素,总是在HTML的第一行 书写格式:<!DOCTYPE HTML> 是用于通知浏览器目前文档正使用哪一个HTML版本(相关属性 lang) 若不写文档声明,浏览器渲染页面时会进入怪异模式 HTML元素又叫根元素或根标记,是所有元素的祖先元素 例:<html lang="en"></html>表示该文档中的文字用英语 <html lang="zh-cmn-hans"></html>

HTML 文档声明

DTD(文档类型定义)是一组机器可读的规则,定义XML或HTML特定版本中可以出现哪些东西. 解析网页的时候,浏览器将使用这些规则检查页面的有效性并采取相应的措施. 浏览器通过解析页面的DOCTYPE 声明来了解使用那个DTD,以及使用的是HTML的哪个版本. DOCTYPE 声明是指 HTML 文档开头处的一行或是两行代码,描述使用哪个DTD. HTML的历史版本: HTML 1.0:在1993年6月作为互联网工程工作小组(IETF)工作草案发布. HTML 2.0:1995年1 1月作为RF

xml的文档声明

1.1.1 Xml文件的组成部分文档声明元素元素的属性注释CDATA区特殊字符处理指令(PI:Processing Instruction):了解绿色标注的内容:不作为掌握,了解即可1.1.2 文档声明什么是文档声明?在编写XML文档时,需要先使用文档声明来声明XML文档.且必须出现在文档的第一行这就好比我们在写java文件的时候需要声明class一样, 就是个硬性的规定.如何编写文档声明? <?xml version='1.0' encoding='UTF-8'?> xml表示标签的名字 v

浏览器的两种模式quirks mode 和strict mode

关键字: javascript.quirks mode.strict mode 在看js代码时,有时会看到关于quirks mode(怪异模式)和strict mode(严格格式)的东西,一直也没深究怎么回事,只是零零碎碎的有些概念,最近终于受不了这种似懂非懂的感觉,决定好好学习总结一下. 1.quirks mode和strict mode是浏览器解析css的两种模式,或者可以称之为解析方法.目前正在使用的浏览器这两种模式都支持 . 2.历史原因. 当早期的浏览器Netscape 4和Explo