浏览器的渲染原理

2017-04-15  本文已影响0人  汲汲hz

浏览器的工作原理是非常重要的基础知识,而且内容非常多,有一篇文章How browsers work非常著名,其内容也十分详实,有中文版本前端必读:浏览器内部工作原理。在此基础上,我将一些要点用我自己能理解的话总结一遍,一是梳理一遍整个的过程,另外是方便今后的复习。

总论

浏览器的主要构成

浏览器的主要构成是用户界面浏览器引擎渲染引擎网络UI后端JS解释器数据存储。在chorme中,每个标签页都是独立的进程(意味着单个标签页的崩溃不会影响到其他标签页)

Paste_Image.png

渲染引擎

渲染引擎

面试常见的一个问题是浏览器的内核有哪些,浏览器的内核包括渲染引擎和JS引擎,但随着JS引擎越来越独立,内核就倾向只指代渲染引擎了。

浏览器内核 常见浏览器
Trident内核 IE、傲游、世界之窗浏览器、Avant、腾讯TT、360、Netscape 8、NetCaptor、Sleipnir、GOSURF、GreenBrowser和KKman等
Gecko内核 Firefox、Netscape6至9
WebKit内核 Safarichrome、Opera
EdgeHTML内核 Edge

渲染的主流程

解析html以构建dom树 -> 构建render树 -> 布局render树 -> 绘制render树

Paste_Image.png
  1. 渲染引擎解析html,构建“DOM tree”
  2. CSS文件及style标签中的样式信息以及html中的可见性指令构建CSSOM
  3. DOM tree和CSSOM一起构建Render树
  4. Render树是一些含有各种属性的矩形,根据某种规则显示在屏幕上。
  5. 构建了Render树后,会布局Render树,这一过程确定每个节点的坐标
  6. 布局之后是绘制,遍历Render树,并使用UI后端层绘制

解析与DOM树构建

几个概念:

解析的过程(由浅入深)

解析器类型

DOM

HTML解析

解析结束时的处理

CSS解析

处理脚本及样式表的顺序

脚本

预解析

样式表

渲染树的构建

渲染树和Dom树的关系

创建树的流程

样式计算

样式表的级联顺序

具有同等级别的声明将根据specifity以及它们被定义时的顺序进行排序。

  1. 浏览器声明
  2. 用户声明
  3. 作者的一般声明
  4. 作者的important声明
  5. 用户important声明

Specifity

连接a-b-c-d四个数量将得到specifity。四级(a、b、c、d)之间并不是简单的相加关系。同一级(例如:a对a)的才具有可比关系

布局

当渲染对象被创建并添加到树中,它们并没有位置和大小,计算这些值的过程称为layout或reflow。

绘制

渲染引擎的线程

事件循环

浏览器主线程是一个事件循环,它被设计为无限循环以保持执行过程的可用,等待事件(例如layout和paint事件)并执行它们

上一篇 下一篇

猜你喜欢

热点阅读