`
winzenghua
  • 浏览: 1326136 次
  • 性别: Icon_minigender_2
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

浏览器中的渲染模式

阅读更多

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 NS6Gecko pre-1.0.1 Gecko 1.0.1+ & SafariOpera 9 Opera 7.5 IE 7 & Opera 7.10 IE 6 & Opera 7.0 IE MacKonq 3.2 Doctype NS6Gecko pre-1.0.1 Gecko 1.0.1+ & SafariOpera 9 Opera 7.5 IE 7 & Opera 7.10 IE 6 & Opera 7.0 IE MacKonq 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

模式的差异和实例

在 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 中,一个给定的页面所使用的渲染模式将会在"页面信息"的信息框中显示。



本文是使用 B3log Solob3log-vanessa 进行同步发布的
分享到:
评论

相关推荐

    统一模式的WebKit浏览器渲染引擎的利弊.docx

    统一模式的WebKit浏览器渲染引擎的利弊.docx

    一、浏览器渲染原理(进程、线程)http请求全过程-浏览器输入url整个过程

    1.1 浏览器中的5个进程(浏览器、插件、渲染、网路、前四个一个页面打开必备、GPU) 1.2 浏览器发送 HTTP 请求的流程(B/S模式)(注意:http协议是基于tcp/ip协议的,http协议是应用层协议,tcp/ip协议是通信层协议...

    buildinginstructions.js:使用three.js在浏览器中渲染乐高积木制作说明

    buildinginstructions.js 使用和在浏览器中渲染乐高积木指令。 看到这个项目在可视化入门复制此存储库中的文件后,您可以查看: 用于设置渲染的sample_view.htm。 该示例少于100行,并且提供了一个易于掌握的良好...

    让易语言的浏览器用ie9的浏览模式渲染例子分享-易语言

    让易语言的浏览器用ie9的浏览模式渲染

    几米浏览器 v1.0.10.10.zip

    对于同时开启数十个页面,CPU占用率高的情况,几米浏览器提供了性能优化模式,开启此模式后,CPU占用率可瞬间降低并维持到打开一个单页面的水准,此模式对于网络浏览用户不存在兼容性问题。 屏幕截图 可以以图片...

    浅谈浏览器兼容性模式[按F12便知]

    这一串东西就是告诉浏览器你要用何种模式来渲染页面,说白了就是让浏览器用何种标准的CSS进行页面布局。 有三种模式供你选择: 标准模式(Standards Mode) 准标准模式(Almost Standards Mode) 怪癖模式...

    基于浏览器JS实现扫描二维码

    实现原理:H5调用系统媒体设备》选择前置摄像头》捕获视频流》渲染到视频播放器》定时抓取视频截图》渲染到canvas》转换为图片流》使用图像识别库对图片流进行二维码识别 优势: 1.基于浏览器实现,轻便且维护方便...

    GreenBrowser 绿色浏览器 v6.3.1221

    例如网址的安全漏洞修正:右键单击关闭页面的问题修正:IE10渲染模式失败的问题改善:自动填表时网址的识别改善:复杂网址的判断1.修正启动时判断上网状态造成浏览器死机的问题2.修正about:开头网址可能被利用在...

    搜狗浏览器4.0b

    高速内核也迎来较大升级,高速内核性能进一步增强,渲染能力、网页标准兼容性都有了大幅提升。 2. 皮肤:浏览器默认皮肤全新改版,界面更清爽、更现代。 3. 安装界面:重新设计了安装程序,安装界面简约时尚,并可一...

    crawlergo使用chrome headless模式进行URL收集的浏览器爬虫

    crawlergo是一个使用chrome headless模式进行URL收集的浏览器爬虫。它对整个网页的关键位置与DOM渲染阶段进行HOOK,自动进行表单填充并提交,配合智能的JS事件触发,尽可能的收集网站暴露出的入口。内置URL去重模块...

    白帽子讲浏览器安全.钱文祥(带详细书签).pdf

    在本书中我们将给出解答,带你了解浏览器安全的方方面面。本书兼顾攻击者、研究者和使用者三个场景,对大部分攻击都提供了分析思路和防御方案。本书从攻击者常用技巧的“表象”深入介绍浏览器的具体实现方式,让你在...

    闪游浏览器2.5版本

    改进:闪游崩溃提示中添加操作系统版本、IE版本、渲染模式 改进:收藏管理器打开后默认显示所有收藏 改进:退出提示对话框添加提示图标,显示更加人性化 修正:同步后的新收藏文件无法覆盖旧收藏问题 修正:部分...

    2013最新猎豹安全浏览器 3.0.14 官方正式版

    首创BIPS浏览器安全体系,用户至上的敢赔模式; 极速:双核设计,创新智能切换引擎;对Chrome内核超过100项改进; 炫酷:猎豹与世界顶级设计团队Rigo Design携手,致力于为您提供极致的浏览体验;100多处元素优化,...

    chorm浏览器的跨域插件

    由于Web 端的远程加载受到浏览器的 CORS 跨域策略限制,如果对方服务器禁止跨域访问,那么会加载失败,而且在 WebGL 渲染模式下,即便对方服务器允许 http 请求成功之后也无法渲染,这是 WebGL 的安全策略的限制 ...

    解决360双核浏览器兼容模式的页面显示问题

    以360的几款浏览器为例,我们优先通过Webkit内核渲染主流的网站,只有小量的网站通过IE内核渲染,以保证页面兼容。在过去很长一段时间里,我们主要的控制手段是一个几百k大小网址库,一个通过长期人工运营收集的网址...

    建议大家换个浏览器opera世界最好没有其2

    包括网络同步,Wand密码管理、会话管理、鼠标手势、键盘快捷键、内置搜索引擎、智能弹出式广告拦截、网址的过滤、浏览器识别伪装和超过400种,可以方便下载更换的皮肤,界面也可以在定制模式下通过拖放随意更改。...

    OpenSceneGraph三维渲染引擎编程指南.pdf

    5.1.2 渲染属性和渲染模式 117 5.1.3 状态继承 118 5.1.4 渲染状态示例 119 5.2 纹理映射 121 5.2.1 二维纹理映射 123 5.2.2 二维纹理映射示例 126 5.2.3 多重纹理映射 129 5.2.4 多重纹理映射示例 ...

Global site tag (gtag.js) - Google Analytics