浏览器渲染原理

上一篇 / 下一篇  2014-11-17 14:15:18 / 个人分类:兼容性测试

各种渲染引擎

Firefox, Safari两种浏览器构建于两种渲染引擎之上:Firefox使用Gecko——Mozilla自家的渲染引擎;SafariChrome都使用Webkit,而Chrome曾放出重磅消息,将从开源的Webkit上分叉出自己的开源浏览器引擎BlinkOpera宣布跟随Google Chrome的脚步,将弃用自家的Presto引擎,支持Blink引擎,而IE使用的是Trident内核。众多国内主流浏览器使用的双引擎一般都是WebkitTrident两种内核。

渲染原理

基本工作流为:

1.解析HTML构建DOM树:

会解析三个东西:HTML/SVG/XHTMLCSSjavascript。解析CSS会产生CSS规则树,解析javascript主要是通过DOM APICSSOM API来操作DOM TreeCSS

2. Rule Tree渲染树构建:

解析完成后,浏览器引擎会通过DOM TreeCSS Rule Tree来构造Rendering Tree。不过,Rendering Tree渲染树并不等同于DOM树,因为一些像Headerdisplay:none的东西就没必要放在渲染树中了。CSSRule Tree主要是为了完成匹配并把CSS Rule附加上Rendering Tree上的每个Element。也就是DOM结点。

3.渲染树布局:

计算每个element确切的显示位置,也就是layoutreflow的过程

4.绘制渲染树:

通过调用操作系统Native GUIAPI绘制将每一个节点绘制出来。看起来步骤繁琐,但是为了更好的用户体验,浏览器会尽可能快的把内容显示出来,并不会等到所有的HTML解析完后才创建并布局渲染树,它会在处理后续内容的同时把处理过的局部内容先展示出来。

渲染过程

Web页面运行在各种各样的浏览器当中,浏览器载入、渲染页面的速度直接影响着用户体验简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程。先来大致了解一下浏览器都是怎么干活的:
  1.用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件;
  2.浏览器开始载入html代码,发现<head>标签内有一个<link>标签引用外部CSS文件;
  3.浏览器又发出CSS文件的请求,服务器返回这个CSS文件;
  4.浏览器继续载入html<body>部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了;
  5.浏览器在代码中发现一个<img>标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码;
  6.服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;
  7.浏览器发现了一个包含一行Javascript代码的<script>标签,赶快运行它;
  8. Javascript脚本执行了这条语句,它命令浏览器隐藏掉代码中的某个<div>style.display=none)。杯具啊,突然就少了这么一个元素,浏览器不得不重新渲染这部分代码;
  9.终于等到了</html>的到来,浏览器泪流满面……
  10.等等,还没完,用户点了一下界面中的换肤按钮,Javascript让浏览器换了一下<link>标签的CSS路径;
  11.浏览器召集了在座的各位<div><span><ul><li>们,大伙儿收拾收拾行李,咱得重新来过……”,浏览器向服务器请求了新的CSS文件,重新渲染页面。

 

 

 


TAG:

 

评分:0

我来说两句

Open Toolbar