天天看點

document.compatMode的CSS1compat

document.compatMode

BackCompat:标準相容模式關閉。浏覽器寬度:document.body.clientWidth;

CSS1Compat:标準相容模式開啟。 浏覽器寬度:document.documentElement.clientWidth。

var d = document,
  dd = d.documentElement,
  db = d.body,
  dc = d.compatMode == 'CSS1Compat',
  dx = dc ? dd: db;

cWidth = dx.clientWidth;

cHeight = dx.clientHeight;

sWidth = dx.scrollWidth;

sHeight = dx.scrollHeight;

sLeft = dx.scrollLeft;

sTop = dx.scrollTop;      

在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)

在js中如何判斷目前浏覽器正在以何種方式解析? 

document對象有個屬性compatMode ,它有兩個值:

BackCompat     對應quirks mode

CSS1Compat     對應strict mode

浏覽器的相容性表

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

曆史原因:

當早期的浏覽器Netscape 4和Explorer 4對css進行解析時,并未遵守W3C标準,這時的解析方式就被我們稱之為quirks mode(怪異模式),但随着W3C的标準越來越重要,衆多的浏覽器開始依照W3C标準解析CSS,仿照W3C标準解析CSS的模式我們叫做strict mode(嚴格模式)

cssfirefly

http://cssfirefly.cnblogs.com