`

浏览器Quirksmode(怪异模式)与CSS1compat

    博客分类:
  • css
 
阅读更多

 

浏览器Quirksmode(怪异模式)与CSS1compat

分类: javascript 375人阅读 评论(0) 收藏 举报

由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode),这就是二者最简单的区别。

     W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上。
    
     那么浏览器究竟该采用哪种模式渲染呢?这就引出的DTD,既是网页的头部声明,浏览器会通过识别DTD而采用相对应的渲染模式:

1. 浏览器要使老旧的网页正常工作,但这部分网页是没有doctype声明的,所以浏览器对没有doctype声明的网页采用quirks mode解析。  
2. 对于拥有doctype声明的网页,什么浏览器采用何种模式解析,这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/  
3. 对于拥有doctype声明的网页,这里有几条简单的规则可用于判断:对于那些浏览器不能识别的doctype声明,浏览器采用strict mode解析
4. 在doctype声明中,没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析。
5. 可以这么说,在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的。
6. 在ie6中,如果在doctype声明前有一个xml声明(比如:<?xml version="1.0" encoding="iso-8859-1"?>),则采用quirks mode解析。这条规则在ie7中已经移除了。


     Quirks mode和Standars mode最大的不同就是提现在对盒模式的解释上,这也是我们在js里要注意的地方。
     什么是盒模式? 这是针对块级元素说的,说白了就是把块级元素想像成一个装东西的盒子,而margin,padding,border,width这些css属性构成了盒模式。  

在Standars mode中: 

元素真正的宽度 = margin-left   +   border-left-width   +   padding-left   + width   +   padding-right   +   border-right-width   +   margin-right;  

在Quirks mode中: 

width则是元素的实际宽度,内容宽度 = width   -   (margin-left   +   margin-right   +   padding-left   +   padding-right   +   border-left-width   +   border-right-width)

1. 内联元素 ,例如<a>|<span>等,定义上下边界不会影响到行高(line-height),内联元素距离上一行元素的距离由行高决定,而不是填充或边界。  
2.   内联元素(display: inline) 内联元素不需要在新行内显示,而且也不强迫其后的元素换行,如a|em|span等都为内联元素。内联元素可以为任何其他元素的子元素。
3. 浮动元素(无论左或者右浮动)边界不压缩 ,且若浮动元素不声明宽度,则其宽度趋向于0,即压缩到其内容能承受的最小宽度。  
4. 如果盒中没有内容,则即使定义了宽度和高度都为100%,实际上只占0% ,因此不会被显示,此点在采取层布局的时候需特别注意。  
5. 边界值可为负,其显示效果各浏览器可能不相同。  
6. 填充值不可为负。  
7. 边框默认的样式(border-style)为不显示(none)。

在js中如何判断当前浏览器正在以何种方式解析?   
document对象有个属性compatMode ,它有两个值:

BackCompat     对应quirks mode
CSS1Compat     对应strict mode
 


各浏览器的兼容性表,可以查看PPK的网站: 

http://www.quirksmode.org/compatibility.html

分享到:
评论

相关推荐

    quirksmode

    浏览器 Quirksmode(怪异模式)与 CSS1compat 浏览器 Quirksmode(怪异模式)与 CSS1compat 是一种浏览器渲染模式的概念,它们之间存在着一些区别和联系。Quirksmode 也称为 Compatibility Mode,是一种非标准的渲染...

    html-type-作用介绍.doc

    浏览器的渲染模式通常分为两种:标准兼容模式(CSS1Compat)和怪异模式(BackCompat)。标准兼容模式也被称为严格模式,它会促使浏览器更加严格地遵循规范来解析CSS和执行JavaScript脚本。在标准模式下,网页中各种...

    【JavaScript源代码】JavaScript获取网页的宽高及如何兼容详解.docx

    不过,`document.compatMode` 可以帮助我们判断当前文档是处于标准模式(CSS1Compat)还是怪异模式(BackCompat)。根据这个属性,我们可以编写兼容性代码: ```javascript if (document.compatMode === ...

    document.compatMode介绍

    在理解`document.compatMode`之前,我们需要先了解两种主要的渲染模式:Standards Mode(标准模式)和Quirks Mode(怪异模式)。 **Standards Mode** 是按照W3C标准来解析和渲染HTML和CSS的模式,确保所有浏览器对...

    html doctype 作用介绍

    有两种主要的渲染模式:BackCompat(也称为怪异模式或混杂模式)和CSS1Compat(标准兼容模式或严格模式)。在怪异模式下,浏览器倾向于模仿早期版本的IE浏览器行为,这可能导致CSS布局和JavaScript执行与现代标准不...

    为什么使用DOCTYPE HTML

    例如,`document.compatMode`属性可以返回浏览器的渲染模式,如果是“CSS1Compat”,则表明在标准模式下,如果是“BackCompat”,则意味着在怪异模式。 总之,DOCTYPE HTML是确保浏览器正确解析和展示HTML页面的...

    由document.body和document.documentElement想到的

    `document.compatMode`的值可以是"BackCompat"(对应Quirks Mode)或"CSS1Compat"(对应Standards Mode)。通过检查这个属性,开发者可以判断浏览器如何解析页面,从而调整代码以确保兼容性。 在CSS样式处理中,...

    javascript document.compatMode兼容性

    2. **CSS1Compat**:这是标准模式的标识,表明浏览器按照W3C CSS1规范来解析文档,盒模型和其他特性遵循现代标准。 在处理页面宽高、滚动条位置等信息时,`document.compatMode`的检查就显得尤为重要。例如,以下...

    取得窗口大小 兼容所有浏览器的js代码

    如果`***patMode`的值不是`CSS1Compat`,说明浏览器处于怪异模式(quirks mode),此时应使用`document.body.clientWidth`和`document.body.clientHeight`。 这段代码能确保在几乎所有主流浏览器中都能准确获取窗口...

Global site tag (gtag.js) - Google Analytics