`
buliedian
  • 浏览: 1243746 次
  • 性别: 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 进行同步发布的
分享到:
评论

相关推荐

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

    在设置标签时,也应考虑网站所依赖的特性,从而选择最合适的渲染模式。 另外,360浏览器对于双核切换机制的优化还在持续进行中,它们鼓励用户反馈问题,并通过智能判断技术提高自动切换的准确率。但人工干预是必须...

    QQ浏览器高速渲染组件.docx

    QQ浏览器的高速渲染组件正是在这样的技术支撑下,旨在通过新的渲染模式提升网页加载速度,优化网页滚动平滑度,并在实际应用中显示出对于现代网页技术的卓越适应能力,其在HTML5测试中所获得的483分高分,即是一个...

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

    统一模式的WebKit浏览器渲染引擎的利弊 在互联网时代,浏览器渲染引擎的选择对用户和开发者的影响非常大。近期,Opera 宣布转向使用开源的 WebKit 引擎,这引起了业界的大讨论。那么,到底是使用统一的 WebKit ...

    IE8浏览器如何确定文档模式.docx

    X-UA-Compatible meta 标签和头部是 HTML 文档中的 meta 标签和 HTTP 响应头,它们可以指定浏览器使用哪种渲染模式来渲染网页。例如,使用 X-UA-Compatible meta 标签可以指定浏览器使用 IE7 标准模式或 IE8 标准...

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

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

    浏览器模式与文档模式区别[参照].pdf

    当你在浏览器模式中切换版本时,这些条件注释的行为也会相应改变。 另一方面,**文档模式**则关乎IE的排版引擎,它决定了浏览器如何解析和渲染DOM(文档对象模型)。不同的文档模式会使用不同的渲染规则,如标准...

    IE8 指定不同的页面渲染模式

    在探讨IE8指定不同的页面渲染模式这一主题时,我们深入解析了如何通过X-UA-Compatible元信息标记来控制Internet Explorer 8(以下简称IE8)在不同渲染模式下的表现,以实现跨浏览器兼容性优化。以下是对标题、描述...

    用于切换CSS功能的devtools扩展以后开发人员查看页面应用在浏览器中的渲染方式

    描述中提到的“以后开发人员查看页面/应用在浏览器中的渲染方式”,意味着这个扩展帮助开发者在多种CSS渲染模式下查看和分析他们的项目。它可能包含了对各种CSS3新特性,如Flexbox、Grid布局、动画、过渡、以及旧版...

    搜狗高速浏览器兼容模式怎么设置.docx

    搜狗高速浏览器的兼容模式是一种特殊模式,它模仿较旧版本的浏览器来渲染网页,从而解决一些因技术更新换代导致的兼容性问题。设置兼容模式,首先需要用户启动搜狗高速浏览器,然后打开希望浏览的网页。此时,在地址...

    IE8如何定义浏览器工作模式避免网页显示混乱

    其次,当仅更改DOCTYPE仍然无法解决问题时,可以使用HTML的META标签`&lt;meta http-equiv="X-UA-Compatible" content="IE=8" /&gt;`来强制IE8使用特定的渲染模式。这个元标签告诉浏览器使用特定的“用户代理兼容性视图”,...

    王志刚:浏览器的多进程架构与渲染优化

    标题中提到的“浏览器的多进程架构与渲染优化”指的是现代浏览器采用的一种架构模式,旨在提高浏览器的性能、稳定性和安全性。浏览器作为用户访问网络资源的重要窗口,其性能直接关系到用户的上网体验。多进程架构...

    IE8调用IE7渲染模式,网页高度根据内容高度显示

    本话题主要探讨如何让IE8浏览器调用IE7的渲染模式来解决特定问题,特别是针对iframe自定义高度的问题。 首先,让我们理解为什么需要在IE8中模拟IE7的渲染模式。IE8引入了更现代的渲染引擎,但为了向后兼容,它提供...

    本地测试浏览器模式选择

    3. **在浏览器环境中的应用**:在Web开发中,设计模式可以帮助处理异步操作(如Promise和Async/Await)、事件监听(观察者模式)、模块化(工厂模式)等问题。例如,MVC(模型-视图-控制器)模式常用于构建前端应用...

    用Meta标签控制360浏览器默认极速模式打开自己的网站

    这是一个非常有效的方法,通过简单的设置即可实现对360浏览器渲染模式的控制。 例如,如果希望网页默认使用360浏览器的极速模式打开,可以添加如下Meta标签:。相应地,如果需要默认使用IE兼容内核,则添加,如果...

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

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

    猎豹浏览器兼容模式怎么设置.docx

    - 选中该选项,这意味着浏览器将优先使用 Trident 引擎来渲染网页,从而提高兼容性。 4. **确认设置更改**: - 设置完成后,浏览器会自动保存更改。 - 界面上方会弹出一条提示消息:“修改已保存”。 #### 四、...

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

    首先,我们需要理解什么是浏览器渲染模式。渲染模式决定了浏览器如何解释和展示网页内容。IE9引入了新的渲染引擎,称为Trident 7,它对CSS3、HTML5等现代Web标准提供了更好的支持,提升了页面加载速度和用户体验。将...

    基于QT浏览器,可在配置文件中配置网址

    在实际应用中,开发者还可以扩展配置文件,添加更多的自定义选项,例如是否开启开发者工具、是否允许JavaScript执行、是否启用隐私模式等。用户可以根据个人需求调整这些设置,从而获得个性化的浏览体验。 总之,QT...

    web软件包装成C/S模式,实现屏蔽浏览器菜单-地址栏

    B/S模式中,用户通过浏览器与服务器交互,所有的业务逻辑和界面渲染都在服务器端处理,而客户端只需负责展示和发送请求。C/S模式则不同,它有一个专门设计的客户端应用程序,这个程序不仅包含用户界面,还可能包含...

    让网页自动调用双核浏览器的极速模式(Webkit)

    在当前的互联网环境中,双核浏览器已经成为国内用户访问网页的主流选择。这些浏览器通常采用两种不同的渲染引擎,一种是Webkit内核,如Google Chrome和Safari,它以高速渲染和对现代网页标准的良好支持而著称;另一...

Global site tag (gtag.js) - Google Analytics