Skip to main content

浏览器渲染过程

浏览器渲染过程图示​

                              +---------+
| 操作 DOM |
+----+----+
|
v Layout Engine
HTML File ---> HTML Parser ---> DOM Tree ^
| |
v v
Attachment ---> Render Tree ---> Painting ---> Display
^
|
CSS Files ---> CSS Parser ---> CSS Rules


Parser: 解析器
Attachment: 附加。此处特指将 DOM 树和样式表关联起来,创建一颗 Render 树这一过程
Render Tree: 渲染树
Layout Engine: 布局引擎
Paint: 绘制
  1. 一般访问一个网站,最先请求到的是一个 index.html 文件
  2. HTML 文件由浏览器内核里的 HTML Parser 解析,将 HTML 转成 DOM Tree
  3. CSS 文件由浏览器内核里的 CSS Parser 解析
  4. DOM Tree 和 CSS Rules 结合在一起,生成了 Render Tree
  5. Layout Engine 还会对 Render Tree 进行一些具体的调整。比如根据浏览器高度、宽度、缩放尺寸等不同,具体元素的位置和大小也不一样
  6. 上面都 ok 之后,浏览器就可以绘制每一个元素了
  7. 绘制完成后就展示在浏览器上

两个问题​

  1. 在渲染执行过程中,即 HTML 解析中,遇到了 script 标签怎么办?

    停止解析 HTML,去加载和执行 script 标签里的 JavaScript 代码。 script 标签中的 async 和 defer 属性

  2. 操作 DOM 的 JavaScript 代码是由什么来解析和执行的?

    JavaScript 引擎