浏览器渲染引擎,提高css渲染速度。

一、渲染引擎
渲染引擎的职责是……渲染,也就是把请求的内容显示到浏览器屏幕上。
默认情况下渲染引擎可以显示HTML,XML文档以及图片。 通过插件(浏览器扩展)它可以显示其它类型文档。

二、各种渲染引擎
我们提到的Firefox, Safari两种浏览器构建于两种渲染引擎之上:
Firefox使用Gecko —— Mozilla自家的渲染引擎;Safari 和 Chrome 都使用 Webkit。

最终决定浏览器表现出来的页面效果的差异是:渲染引擎 Rendering Engine(也叫做排版引擎),也就是我们通常所说的“浏览器内核”,负责解析网页语法(如HTML、JavaScript)并渲染、展示网页。相同的代码在不同的浏览器呈现出来的效果不一样,那么就很有可能是不同的浏览器内核导致的。

三、主要流程
渲染引擎开始于从网络层获取请求内容,一般是不超过8K的数据块。接下来就是渲染引擎的基本工作流程:

渲染引擎的基本工作流程(解析HTML构建DOM树,渲染树构建,渲染树布局,绘制渲染树)。
1、解析HTML以重建DOM树(Parsing HTML to construct the DOM tree ):渲染引擎开始解析HTML文档,转换树中的标签到DOM节点,它被称为“内容树”。
2、构建渲染树(Render tree construction):解析CSS(包括外部CSS文件和样式元素),根据CSS选择器计算出节点的样式,创建另一个树 —- 渲染树。
3、布局渲染树(Layout of the render tree): 从根节点递归调用,计算每一个元素的大小、位置等,给每个节点所应该出现在屏幕上的精确坐标。
4、绘制渲染树(Painting the render tree) : 遍历渲染树,每个节点将使用UI后端层来绘制。

一定要理解这是一个缓慢的过程,为了更好的用户体验,渲染引擎会尝试尽快的把内容显示出来。它不会等到所有HTML都被解析完才创建并布局渲染树。它会 在处理后续内容的同时把处理过的局部内容先展示出来。

四、主要流程示例

图 2:Webkit主要流程

图 3:Mozilla的Gecko渲染引擎主要流程(3.6)

从图2和图3中可以看出,尽管Webkit与Gecko使用略微不同的术语,这个过程还是基本相同的。
Gecko里把格式化好的可视元素称做“帧树”(Frame tree)。每个元素就是一个帧(frame)。
Webkit则使用”渲染树”这个术语,渲染树由”渲染对象”组成。
Webkit里使用”layout”表示元素的布局,Gecko则称为”Reflow”。
Webkit使用”Attachment”来连接DOM节点与可视化信息以构建渲染树。
一个非语义上的小差别是Gecko在HTML与DOM树之间有一个附加的层 ,称作”content sink”,是创建DOM对象的工厂。

主要的流程就是:构建一个dom树,页面要显示的各元素都会创建到这个dom树当中,每当一个新元素加入到这个dom树当中,浏览器便会通过css引擎查遍css样式表,找到符合该元素的样式规则应用到这个元素上。

五、浏览器对CSS的匹配原理

浏览器CSS匹配是从右到左进行查找。比如之前说的DIV#divBoxpspan.red{color:red;},浏 览器 的查找顺序如下:先查找html中所有class=’red’的span元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有id为 divBox的div元素,如果都存在则CSS匹配上。

浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。firefox称这种查 找方式为keyselector(关键字查询),所谓的关键字就是样式规则中最后(最右边)的规则,上面的key就是span.red。

六、优化你的CSS
1.css 命名 、书写规范。
好的代码看上去就很整齐 很有条理性这样方便日后的维护和管理。
2.避免使用通配规则。
*{}  计算次数惊人!只对需要用到的元素进行选择。
3.css优先级。
选择器权重:内联样式:1000,id选择器:100, class选择器:10,标签选择器:1 。
上一篇有总结。CSS选择器的权重与优先规则?
4.少用滤镜,少用hack,少用position:absolute;。
5.尽量少的去对标签进行选择,而是用class。
如:#nav li{},可以为li加上nav_item的类名,如下选择.nav_item{}。
6.不要去用标签限定ID或者类选择符
如:ul#nav,应该简化为#nav。
如:div.box { color: #f00; }; 直接 可以 用类名, .box { color:#f00;}  这样浏览器找到这个class后 就不用再匹配是否存在div标签.从而提高了渲染效率。当然同一级的 有不同的样式可以这样写,但是不建议这样。
7.尽量少的去使用后代选择器,降低选择器的权重值,css的层级关系不要太深 用class直接代替多余的层级元素。
后代选择器的开销是最高的,尽量将选择器的深度降到最低,最高不要超过三层,更多的使用类来关联每一个标签元素。
例如 .box .box-con .box-list li { line-height: 24px; } 这么长。。。增加代码量减小开发效率。刚也说了,css渲染是从上到下,从右到左的
所以直接这样写就可以了.box-list li { line-height: 24px; };
8.使用简写样式。
例如margin: 10px; 浏览器会解释为上下左右各有10px的外补丁。margin: 0 10px 浏览器解析为 左右有10px的外补丁。
9.平铺背景图片不要过小,影响渲染速率。
10.float使用要谨慎。
11.不要放空的class。
别放空的的class或没有的class在html代码中,这样无意义。
12.多用继承属性。
考虑继承 了解哪些属性是可以通过继承而来的,然后避免对这些属性重复指定规则。

<style>
  a:link,a:visited{color:#0000FF}
  a:hover,a:active{color:#FF0000}
  #zishu a:link,#zishu a:visited{ font-weight:bold}
  #zishu a:hover,#zishu a:active{ font-style: italic;}
</style>
<div><a href="#">test</a><div>
<div id="zishu"><a href="#">jb51.net</a></div>

13.合理化布局(模块化布局)。
可以把样式划分为 基类 和扩展类 ;模块化布局 :
模块基本相同的样式写在 基类里,不同的在重新用class来定义称为扩展类 。
14.在css渲染效率中id和class的效率是基本相当的。
class在第一次载入中被缓存,在层叠中会有更加好的效果,在根部元素采用id会具有更加好(id有微妙的速度优势)。

时间: 2024-08-03 06:00:45

浏览器渲染引擎,提高css渲染速度。的相关文章

了解浏览器如何工作—渲染引擎1

从基础架构上我们也可以看到浏览器的重头戏其实在于渲染引擎(又称排版引擎),很多页面兼容性问题的根源可以说也皆来源于此.好了,那我们深入到渲染引擎内部仔细看一下吧 从基础架构上我们也可以看到浏览器的重头戏其实在于渲染引擎(又称排版引擎),很多页面兼容性问题的根源可以说也皆来源于此.360浏览器HTML5跑分再高(http://html5test.com/),UI与交互再怎么不一样,内核还是一样的.好了,那我们深入到渲染引擎内部仔细看一下吧. 渲染引擎(the rendering engine)简述

浏览器内核、渲染引擎、js引擎

[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具 [2]常见引擎 渲染引擎: firefox使用gecko引擎 IE使用Trident引擎 2015年微软推出自己新的浏览器,原名叫斯巴达,后改名edge,使用edge引擎 opera最早使用Presto引擎,后来弃用 chrome\safari\opera使用webkit引擎 13年chrome和opera开始使用Blink引擎 js

【转】浏览器内核、渲染引擎、js引擎

[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具 [2]常见引擎 渲染引擎(内核): firefox使用gecko引擎 IE使用Trident引擎 2015年微软推出自己新的浏览器,原名叫斯巴达,后改名edge,使用edge引擎 opera最早使用Presto引擎,后来弃用 chrome\safari\opera使用webkit引擎 13年chrome和opera开始使用Blink引

【repost】浏览器内核、渲染引擎、js引擎

[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具 [2]常见引擎 渲染引擎: firefox使用gecko引擎 IE使用Trident引擎 2015年微软推出自己新的浏览器,原名叫斯巴达,后改名edge,使用edge引擎 opera最早使用Presto引擎,后来弃用 chrome\safari\opera使用webkit引擎 13年chrome和opera开始使用Blink引擎 js

How Javascript works (Javascript工作原理) (十一) 渲染引擎及性能优化小技巧

个人总结:读完这篇文章需要20分钟,这篇文章主要讲解了浏览器中引擎的渲染机制. DOMtree       ----|   |---->  RenderTree CSSOMtree  ----| 这是 JavaScript 工作原理的第十一章. 迄今为止,之前的 JavaScript 工作原理系列文章集中于关注 JavaScript 语言本身的功能,在浏览器中的执行情况,如何优化等等. 然而,当在构建网络应用的时候,不仅仅只是编写自己运行的 JavaScript 代码.所编写的 JavaScri

atitit..主流 浏览器 js 引擎 内核 市场份额 attialx总结vOa9

atitit..主流 浏览器 js 引擎  内核 市场份额 attialx总结vOa9 1. 浏览器内核 1 2. 浏览器的主要组件包括: 2 2.1. 主要组件体系结构 2 2.2. WebCore排版引擎及JavaScriptCore解析引擎, 3 2.3. 渲染引擎基本流程 3 3. 当前主流浏览器的引擎及浏览器: 4 3.1. Trident(MSHTML):IE 4 3.2. Presto:Opera7及以上 4 3.3. Gecko:Firefox 4 3.4. KHTML(衍生出W

Rendering Engine 主流的浏览器内核(排版引擎、渲染引擎、解释引擎)有哪几种,分别的特点

一.A web browser engine A rendering engine is software that draws text and images on the screen. The engine draws structured text from a document (often HTML), and formats it properly based on the given style declarations (often given in CSS). Example

浏览器渲染引擎总结

一.主要模块 1.HTML解析器 解析HTML文本的解析器,主要作用是将HTML代码解析成DOM树 2.CSS解析器 级联样式表的解析器,主要作用是为DOM中的各个元素对象计算出样式信息, 从而为计算最后网页的布局提供基础设施 3.Javascript引擎 解析执行javascript脚本,使用javascript代码可以修改网页的内容, 也能修改css的信息.即javascript可以通过DOM,CSSDOM接口来修改 网页内容和样式信息,从而改变渲染结果 4.布局 在DOM树创建完成之后,渲

浏览器渲染引擎工作原理

浏览器内核包括渲染引擎和JS引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具.它负责取得网页的内容(HTML.XML.图象等等).整理信息(例如加入CSS等),以及计算网页的显示方式然后会输出至显示器或打印机 渲染引擎工作流程 HTML解析器解析DOMM树(解析为DOM树上个节点,同时解析CSS样式) 渲染树结构(具有一定的视觉效果,并按照一定顺序排列在屏幕上) 布局渲染树(为每个节点分配固定坐标) 绘制DOM树(渲染引擎会遍历