Quirks 模式是指 Web 浏览器保持向后兼容的一种技术,它可兼容只适用于旧版浏览器中的网页,从而不适用标准模式中的 W3C 严格解释和 IETF 标准。
概述
web 网页的结构和外观被两中标准化语言共同描述:HTML,web 中用来设计的标记语言,它描述了网页的内容和结构;CSS,广义样式表语言,用于指定各种媒体中的页面应该如何被渲染(屏幕显示的视觉样式,当打印页面时使用的打印样式,使用屏幕阅读器阅读网页的听觉样式等)。但是,大多数旧的 Web 浏览器要么没有完全实现这些语言的规范,要么基于之前的最终标准来开发(例如:在2001年发布的用于 Macintosh 平台的 Microsoft Internet Explorer 5.1,是第一个完全支持 CSS 1 的主要 web 浏览器)。因此,许多旧的 Web 网页结构依赖于旧浏览器中不完整或不正确的实现,而且当这样的浏览器进行处理时只会为其专门渲染。
近些年来,主要的 web 浏览器对 HTML 和 CSS 标准化的支持有着明显的改善,但是大部分依赖于旧浏览器的 quirks 遗留文档呈现了对浏览器开发者们的阻碍,开发者们希望改进浏览器对 HTML 和 CSS 标准化的支持,但也希望能维持向后兼容的旧的、非标准化的网页。此外,许多新的网页继续按照原先的方式创建,因为浏览器开发者们介绍的兼容性解决方法意味着这样一种理解:标准化的方法并不是绝对必要。
为了保持大部分 web 网页在不同浏览器中尽可能多的相兼容,目前的 Web 浏览器一般都具有多个渲染模式:在“标准模式”中,网页根据 HTML 和 CSS 规范被渲染,而在“怪癖(quirks)模式”中则试图去效仿旧浏览器中的行为。某些浏览器(例如那些基于 Mozilla Gecko 渲染引擎的浏览器)将使用“近似(Almost)标准”的模式来试图在两者中进行妥协,实现了 table cell sizing 的 quirk,而其它方面则符合规范。
文档类型的比较
Henri Sivonen 编写了含有各种文件类型的网页在大多数普通浏览器中的展现方式:Quirks、Standards、Almost 标准中的任意一种模式。为“Almost Standards” 使用标准是对 table cell height 进行非标准渲染。
Doctype NS6
Gecko pre-1.0.1 Gecko 1.0.1+ & Safari
Opera 9 Opera 7.5
IE 7 & Opera 7.10
IE 6 & Opera 7.0 IE Mac
Konq 3.2
None |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
HTML 3.2 doctype
|
Q |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
HTML 4.0 Strict doctype without system identifier
|
S |
S |
S |
S |
S |
A |
A |
A |
A |
HTML 4.01 Strict doctype without system identifier
|
S |
S |
S |
S |
S |
A |
A |
Q |
A |
HTML 4.0 Strict doctype with system identifier
|
S |
S |
S |
S |
S |
A |
A |
A |
A |
HTML 4.01 Strict doctype with system identifier
|
S |
S |
S |
S |
S |
A |
A |
A |
A |
HTML 4.0 Transitional doctype without system identifier
|
Q |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
HTML 4.01 Transitional doctype without system identifier
|
Q |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
Q |
HTML 4.01 Transitional doctype with system identifier
|
S |
S |
A |
A |
A |
A |
A |
A |
Q |
HTML 4.01 Transitional doctype with system identifier
|
Q |
S |
A |
A |
A |
A |
A |
A |
Q |
HTML 4.0 Transitional doctype with system identifier
|
Q |
Q |
Q |
Q |
A |
A |
A |
A |
Q |
XHTML 1.0 Strict doctype without an XML declaration
|
S |
S |
S |
S |
S |
A |
A |
A |
A |
XHTML 1.0 Transitional doctype without an XML declaration
|
S |
S |
A |
A |
A |
A |
A |
A |
Q |
XHTML 1.0 Strict doctype with an XML declaration <?xml version="1.0" encoding="UTF-8"?>
|
S |
S |
S |
S |
S |
A |
Q |
A |
Q |
XHTML 1.0 Transitional doctype with an XML declaration <?xml version="1.0" encoding="UTF-8"?>
|
S |
S |
A |
A |
A |
A |
Q |
A |
Q |
ISO HTML 2000 version doctype, short form
|
Q |
S |
S |
Q |
Q |
Q |
Q |
Q |
Q |
ISO HTML 2000 version doctype, long form
|
Q |
S |
S |
S |
S |
A |
A |
A |
Q |
ISO HTML 1999 version doctype, short form
|
S |
S |
S |
Q |
Q |
Q |
Q |
Q |
Q |
ISO HTML 1999 version doctype, long form
|
S |
S |
S |
S |
S |
A |
A |
A |
Q |
HTML5
|
Q |
S |
S |
S |
S |
A |
A |
A |
|
Doctype NS6
Gecko pre-1.0.1 Gecko 1.0.1+ & Safari
Opera 9 Opera 7.5
IE 7 & Opera 7.10
IE 6 & Opera 7.0 IE Mac
Konq 3.2
模式的差异和实例
在 quirks 和 standards 模式之间最显著的一个区别就是 Internet Explorer 在处理 CSS 盒子模型时的 bug。在版本 6 以前, Internet Explorer 在判定一个元素盒子的宽度时所使用的算法与 CSS 规范中的算法在细节上有冲突,而且由于 IE 浏览器的普及,很多被创建的网页都依赖于这个不正确的算法。对此就版本 6而言,当渲染使用 standards 模式时,IE 将使用 CSS 的规范算法;当渲染使用 quirks 模式时,IE 将使用之前的非标准算法。
另一个值得注意的区别就是行内某些元素的垂直对齐方式;虽然 CSS 的规范要求它们与盒子内的文本基线对齐,但许多老版本浏览器的图像是与所在盒子的底部边框对齐。在 standards 模式中,基于 Gecko 的浏览器将与基线对齐,但是在 quirks 模式中,它们将与底部对齐。
此外,许多旧的浏览器不能实现 table 中字体样式的继承;这样一来,即使 CSS 规范要求 table 中的字体样式可继承, 但还是必须每次为其写一个特定的单独样式,并为 table 也写一个。如果字体大小被指定使用相对单位,那么符合标准的浏览器将会继承字体大小的基数,然后再把相对字体的大小赋予到 table 内:例如,一个页面声明了字体大小的基数为 80%,table 里面的字体大小也为 80%(以确保浏览器中字体 80% 的大小不能够被正确的继承),在符合标准的浏览器中,table 中字体将显示为 64%(80%的80%)。因此,在 quirks 模式中,浏览器通常不会继承 table 的字体大小。
Almost standards 模式
基于 Gecko 1.0.1 以后的浏览器(如Firefox),Safari 和 Opera 7.5(及以后版本)有三分之一的兼容模式被看为“almost standards 模式”,它保持了“传统”的 table cell 的垂直大小,与 CSS2 的规范相违背。但这有效地使它们的应用更加接近于 Internet Explorer 的 standards 模式。
“Almost standards”渲染模式与“standards”模式在很多细节上极其相似。首先,在 table cell 内的图片布局按照 Gecko 中的 “quirks”模式进行处理,这相当于和其它浏览器保持一致,例如 IE。这意味着,当在“quirks”或者“almost standards”模式下, table 中分割图片的布局在 Mozilla 1.0.1 或以后的基于 Gecko 渲染引擎的浏览器中不大可能会发生变化。
模式验证
在大多数最新的浏览器中,文档对象模型的属性 document.compatMode 表示当前页面的渲染模式——在 standards 模式下, document.compatMode 包含值“CSS1Compat”,而在 quirks 模式下,它包含值“BackCompat”。
此外,在 Mozilla Firefox 和 Opera 中,一个给定的页面所使用的渲染模式将会在"页面信息"的信息框中显示。
分享到:
相关推荐
在设置标签时,也应考虑网站所依赖的特性,从而选择最合适的渲染模式。 另外,360浏览器对于双核切换机制的优化还在持续进行中,它们鼓励用户反馈问题,并通过智能判断技术提高自动切换的准确率。但人工干预是必须...
如果用户需要针对特定网站切换渲染模式,可以直接在网页的右键菜单中进行选择。 除了安装和启用,高速渲染组件也允许用户根据需求停用或卸载。如果用户决定停用或卸载组件,系统会自动重新加载之前使用组件打开的...
统一模式的WebKit浏览器渲染引擎的利弊 在互联网时代,浏览器渲染引擎的选择对用户和开发者的影响非常大。近期,Opera 宣布转向使用开源的 WebKit 引擎,这引起了业界的大讨论。那么,到底是使用统一的 WebKit ...
X-UA-Compatible meta 标签和头部是 HTML 文档中的 meta 标签和 HTTP 响应头,它们可以指定浏览器使用哪种渲染模式来渲染网页。例如,使用 X-UA-Compatible meta 标签可以指定浏览器使用 IE7 标准模式或 IE8 标准...
buildinginstructions.js 使用和在浏览器中渲染乐高积木指令。 看到这个项目在可视化入门复制此存储库中的文件后,您可以查看: 用于设置渲染的sample_view.htm。 该示例少于100行,并且提供了一个易于掌握的良好...
当你在浏览器模式中切换版本时,这些条件注释的行为也会相应改变。 另一方面,**文档模式**则关乎IE的排版引擎,它决定了浏览器如何解析和渲染DOM(文档对象模型)。不同的文档模式会使用不同的渲染规则,如标准...
在探讨IE8指定不同的页面渲染模式这一主题时,我们深入解析了如何通过X-UA-Compatible元信息标记来控制Internet Explorer 8(以下简称IE8)在不同渲染模式下的表现,以实现跨浏览器兼容性优化。以下是对标题、描述...
描述中提到的“以后开发人员查看页面/应用在浏览器中的渲染方式”,意味着这个扩展帮助开发者在多种CSS渲染模式下查看和分析他们的项目。它可能包含了对各种CSS3新特性,如Flexbox、Grid布局、动画、过渡、以及旧版...
其次,当仅更改DOCTYPE仍然无法解决问题时,可以使用HTML的META标签`<meta http-equiv="X-UA-Compatible" content="IE=8" />`来强制IE8使用特定的渲染模式。这个元标签告诉浏览器使用特定的“用户代理兼容性视图”,...
标题中提到的“浏览器的多进程架构与渲染优化”指的是现代浏览器采用的一种架构模式,旨在提高浏览器的性能、稳定性和安全性。浏览器作为用户访问网络资源的重要窗口,其性能直接关系到用户的上网体验。多进程架构...
本话题主要探讨如何让IE8浏览器调用IE7的渲染模式来解决特定问题,特别是针对iframe自定义高度的问题。 首先,让我们理解为什么需要在IE8中模拟IE7的渲染模式。IE8引入了更现代的渲染引擎,但为了向后兼容,它提供...
3. **在浏览器环境中的应用**:在Web开发中,设计模式可以帮助处理异步操作(如Promise和Async/Await)、事件监听(观察者模式)、模块化(工厂模式)等问题。例如,MVC(模型-视图-控制器)模式常用于构建前端应用...
1.1 浏览器中的5个进程(浏览器、插件、渲染、网路、前四个一个页面打开必备、GPU) 1.2 浏览器发送 HTTP 请求的流程(B/S模式)(注意:http协议是基于tcp/ip协议的,http协议是应用层协议,tcp/ip协议是通信层协议...
- 选中该选项,这意味着浏览器将优先使用 Trident 引擎来渲染网页,从而提高兼容性。 4. **确认设置更改**: - 设置完成后,浏览器会自动保存更改。 - 界面上方会弹出一条提示消息:“修改已保存”。 #### 四、...
首先,我们需要理解什么是浏览器渲染模式。渲染模式决定了浏览器如何解释和展示网页内容。IE9引入了新的渲染引擎,称为Trident 7,它对CSS3、HTML5等现代Web标准提供了更好的支持,提升了页面加载速度和用户体验。将...
在实际应用中,开发者还可以扩展配置文件,添加更多的自定义选项,例如是否开启开发者工具、是否允许JavaScript执行、是否启用隐私模式等。用户可以根据个人需求调整这些设置,从而获得个性化的浏览体验。 总之,QT...
B/S模式中,用户通过浏览器与服务器交互,所有的业务逻辑和界面渲染都在服务器端处理,而客户端只需负责展示和发送请求。C/S模式则不同,它有一个专门设计的客户端应用程序,这个程序不仅包含用户界面,还可能包含...
在当前的互联网环境中,双核浏览器已经成为国内用户访问网页的主流选择。这些浏览器通常采用两种不同的渲染引擎,一种是Webkit内核,如Google Chrome和Safari,它以高速渲染和对现代网页标准的良好支持而著称;另一...
浏览器 Quirksmode(怪异模式)与 CSS1compat 是一种浏览器渲染模式的概念,它们之间存在着一些区别和联系。Quirksmode 也称为 Compatibility Mode,是一种非标准的渲染模式,而 CSS1compat 则是标准的渲染模式,也...
在计算机操作中,"使用缺省浏览器打开指定网页"是一个常见的任务,这涉及到操作系统与浏览器之间的交互以及程序接口的使用。缺省浏览器是指系统默认设置用来打开网页链接的应用程序,通常是我们经常使用的如Google ...