Skip to content

浏览器渲染原理

更新于: at 19:06

浏览器是如何渲染页面的?

渲染时间点

image

渲染流⽔线

image

1. 解析 HTML - Parse HTML

image

Document Object Model

image

CSS Object Model

image

常⻅问题

HTML 解析过程中遇到 CSS 代码怎么办?

为了提⾼解析效率,浏览器会启动⼀个预解析器率先下载和解析 CSS

image

常⻅问题

HTML 解析过程中遇到 JS 代码怎么办?

渲染主线程遇到 JS 时必须暂停⼀切⾏为,等待下载执⾏完后才能继续

预解析线程可以分担⼀点下载 JS 的任务

image

2. 样式计算 - Recalculate Style

image

3. 布局 - Layout

image

DOM 树 和 Layout 树

DOM 树 和 Layout 树不⼀定是⼀⼀对应的

image

image

image

4. 分层 - Layer

image

5. 绘制 - Paint

这⾥的绘制,是为每⼀层⽣成如何绘制的指令

image

渲染主线程的⼯作到此为⽌,剩余步骤交给其他线程完成

image

6. 分块 - Tiling

分块会将每⼀层分为多个⼩的区域

image

分块的⼯作是交给多个线程同时进⾏的

image

7. 光栅化 - Raster

光栅化是将每个块变成位图,优先处理靠近视⼝的块

image

此过程会⽤到 GPU 加速

image

8. 画 - Draw

合成线程计算出每个位图在屏幕上的位置,交给 GPU 进⾏最终呈现

image

完整过程

image

常⻅⾯试题

什么是 reflow?

image

什么是 repaint?

image

为什么 transform 的效率高?

image