浏览器渲染的过程

在讨论页面渲染性能的时候,常常会听到这几个词“重绘” “回流” “重排”。
回流和重排都是 Reflow的不一样翻译(叫法)
重绘对应Repaint,从新绘制的意思。css

webkit浏览器的渲染过程
html

Gecko(firefox)浏览器的渲染过程
web

从图上能够看出来咱们熟知的Reflow的说法源于ff,webkit这个过程称之为layout(计算布局),意思大概差很少吧。算法

浏览器的工做大体流程
shell

从这个过程当中能够了解到浏览器渲染主要有这么几步浏览器

  1. 解析HTML/XHTML/SVG 生成DOM tree,解析CSS生成CSS rule tree,解析script脚本dom

  2. 浏览器引擎经过DOM tree和css rule tree来构造render tree布局

  3. 调用系统的GUI绘图性能

几个值得关注的点:spa

  1. render tree不彻底包含dom tree的内容,head或者display:none的元素不会出如今render tree中

  2. reflow/layout

  3. reflow/layout一定会repaintrepaint不必定会reflow/layout

  4. css rule tree的生成过程

  5. Repaint——屏幕的一部分要重画,好比某个CSS的背景色变了。可是元素的几何尺寸没有变。
    Reflow——意味着元件的几何尺寸变了,咱们须要从新验证并计算Render Tree。是Render Tree的一部分或所有发生了变化。这就是Reflow,或是Layout。(HTML使用的是flow based layout,也就是流式布局,因此,若是某元件的几何尺寸发生了变化,须要从新布局,也就叫reflow)reflow 会从<html>这个root frame开始递归往下,依次计算全部的结点几何尺寸和位置,在reflow过程当中,可能会增长一些frame,好比一个文本字符串必需被包装起来。

参考:
how browsers work
浏览器渲染原理简介

若是对这块知识感兴趣的话,建议去读下how browsers work这篇文章,比较长,讲的很细致,好比Gecko和webkit在渲染上的一些差别,生成树(dom tree/css render tree)的一些具体算法什么的。

相关文章
相关标签/搜索