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