怪异模式(英语:quirks mode)是指在计算机领域中,一些网页浏览器为了维持对较旧的网页设计的向后兼容性,而使用的一种技术,有别于严格遵循万维网联盟(W3C)与互联网工程任务组(IETF)标准而设计的“标准模式”。
一个网页的结构与外观由两种标准化的语言的组合所描述:HTML,一种设计用于网页的置标语言,描述页面的结构与内容,和CSS,一种广义的样式表语言,用以指定页面在不同媒介中(屏幕显示器的视觉样式,打印页面时的打印样式,页面被屏幕阅读器所阅读时的听觉样式等)该如何被渲染。然而,多数旧的网页浏览器没有完全实施这些语言的定义或者在这些定义完成之前就已被开发(比如,Macintosh平台上的Microsoft Internet Explorer版本5.0发行于2000年,在主流网页浏览器中最早完全支持CSS Level 1)。结果是,很多更早的网页依赖于早期浏览器不完全或不正确的解析而构造,并且只有在被这样的浏览器处理时才会如设想之中那样渲染。
主流浏览器对标准化的HTML和CSS的支持已得到了显著的提高,但是旧版的文档中的很大一部分依赖于旧版浏览器的quirks,对浏览器开发者形成了一个障碍,他们想提高它们对标准化的HTML及CSS的支持,却同样想对早期的非标准化页面保持向后兼容。此外,很多新的网页继续以旧的方式被建造出来,由于浏览器开发者所引进的兼容性解决方案意味着对标准化方法的理解并不是严格必要的。
为了与可能数量众多的网页维持兼容,现代的网页浏览器一般具有多种渲染模式:在“标准模式”(standards mode)页面按照HTML与CSS的定义渲染,而在“quirks模式”中则尝试模拟更旧的浏览器的行为。一些浏览器(例如,那些基于Mozilla的Gecko渲染引擎的,或者Internet Explorer 8在下)也使用一种尝试于这两者之间妥协的“近乎标准”(almost standards)模式,实施了一种表单元格尺寸的怪异行为,除此之外符合标准定义。
在quirks模式和标准模式之间一个突出的不同是对CSS IE盒模型缺陷的处理。在第6版之前,Internet Explorer曾经使用一种决定一个元素的盒模型的宽度和高度的,与CSS规范所指定相冲突的算法,而且由于Internet Explorer的流行,很多依赖于这种不正确的算法的网页被创建。而在版本6, Internet Explorer在标准模式下渲染时使用了CSS规范的算法,而在quirks模式下使用先前的,不规范的算法。
另一个值得一提的不同点是某些行内(inline)元素的垂直对齐;很多早期的浏览器对齐图片至包含它们的盒子的下边框,虽然CSS的规范要求它们被对齐至盒内文本的基线。标准模式下,基于Gecko的浏览器将会对齐至基线,而在quirks模式下它们会对齐至底部。
此外,很多早期的浏览器对表格内部的字体样式不实施继承;结果是,字体样式必须为整个文档作为一个整体指定一次,并且为表格再次指定一次,尽管CSS规范要求字体样式被继承进表格。如果字号使用相对单位指定,一个标准兼容的浏览器会继承基准字号,然后应用于表格内的相对字号:比如,一个声明了基准字号为80%的页面内声明表格为80%(以保证在不正确继承字号的浏览器中有80%的字号)的字号将会,在一个标准兼容的浏览器里,显示具有64%字号的表格。结果是,浏览器在怪异模式典型的不对表格继承字号。.
根据CSS2的规范维持了“传统的”表单元格的垂直方向大小调整的叫做“接近标准模式”(almost standards mode)或者“严格模式”(strict mode)的第三种兼容性模式,已被在这些浏览器中实施:Safari, Opera 7.5(和以上),所有基于Gecko(自1.0.1)的浏览器(比如Firefox)和Internet Explorer 8。
“接近标准”模式的渲染和“标准”模式除了一点之外,在所有细节上相匹配。表单元格内部图片的布局采用和“quirks”模式相同的方式被处理,而不是按照标准,这点和例如Internet Explorer 7(以及更早)的旧有(英语:legacy system)浏览器相当一致。这意味着使用表格内图像片的布局在“quirks”或“接近标准”模式下的浏览器中,比起“标准”模式下,更不至于分崩离析。
通常,浏览器基于页面中文件类型描述的存在以决定采用哪种渲染模式;如果存在一个完整的DOCTYPE则浏览器将会采用标准模式,而如果它缺失则浏览器将会采用怪异模式。例如,一个以如下DOCTYPE开始的网页将会触发标准模式:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">