首页 > 代码库 > 不同内核的浏览器,以及渲染原理

不同内核的浏览器,以及渲染原理

一、

“Rendering Engine”渲染引擎,也可以叫做浏览器内核(这个部分要扩展一下,原本的浏览器内核分为渲染引擎和Js引擎,后来Js引擎越来越独立,内核就倾向于只指渲染引擎了),是浏览器最核心的部分,浏览器内核的不同对于网页的语法解释会有不同,所以渲染出来的效果也不同,简单说就是不同的内核决定了浏览器如何显示页面,也是因为这个原因导致了浏览器兼容性问题的出现。

 

下面是5种浏览器分别采用的不同引擎:

- IE内核 Trident
- 谷歌内核 WebKit / Blink(由webkit衍生而来)
- 火狐内核 Gecko
- Safari内核 WebKit
- 欧朋内核 Presto

 

浏览器渲染原理:(转,这个说得非常有意思http://www.cnblogs.com/ada-zheng/p/4308581.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脚本执行了这条语句,它命令浏览器隐藏掉代码中的某个

(style.display=”none”)。杯具啊,突然就少了这么一个元素,浏览器不得不重新渲染(reflow)这部分代码;
  9. 终于等到了</html>的到来,浏览器泪流满面……
  10. 等等,还没完,用户点了一下界面中的“换肤”按钮,Javascript让浏览器换了一下<link>标签的CSS路径;
  11. 浏览器召集了在座的各位
<span><ul><li>们,“大伙儿收拾收拾行李,咱得重新来过……”,浏览器向服务器请
  求了新的CSS文件,重新渲染页面。
浏览器的心酸扑面而来!
加载页面时浏览器的具体工作流程:
1.解析HTML用来重建DOM树:渲染引擎开始解析HTML文档,转换树中的标签到DOM节点,它被称为“内容树”。
2.构建渲染树:解析CSS(包括CSS文件和样式元素),根据CSS选择器计算出节点的样式,创建另一个树——渲染树。
3.布局渲染树:从根节点递归调用,计算每一个元素的大小,位置等,给每个节点所应该出现在屏幕上的精确坐标。
4.绘制渲染树:遍历渲染树,每个节点将使用UI后断层来绘制。
主要的流程就是:构建一个dom树,页面要显示的各元素都会创建到这个dom树当中,每当一个新元素加入到这个dom树当中,浏览器便会通过css引擎查遍css样式表,找到符合该元素的样式规则应用到这个元素上。
 
 

 

 
 

不同内核的浏览器,以及渲染原理