《浏览器渲染》

115 阅读2分钟

浏览器渲染原理

步骤

  1. 根据HTML构建HTML树(DOM)
  2. 根据CSS创建CSS树(CSSDOM)
  3. 将两棵树合成一颗渲染树(rendr tree)
  4. Layout布局(文档流、盒模型)
  5. Paint绘制(把边框颜色文字颜色阴影等画出来)
  6. Compose合成(根据层叠关系显示画面)

三棵树的结构

. JS / CSS > 样式 > 布局 > 绘制 > 合成

如果您修改元素的“layout”属性,也就是改变了元素的几何属性(例如宽度、高度、左侧或顶部位置等),那么浏览器将必须检查所有其他元素,然后“自动重排”页面。任何受影响的部分都需要重新绘制,而且最终绘制的元素需进行合成。

注意:第一种全走drv.remove()会触发当前消失,其他元素relayout

2. JS / CSS > 样式 > 绘制 > 合成

如果您修改“paint only”属性(例如背景图片、文字颜色或阴影等),即不会影响页面布局的属性,则浏览器会跳过布局,但仍将执行绘制。

注意:第二种跳过Layout改变背景颜色,直接repaint+composite

3. JS / CSS > 样式 > 合成

如何提高浏览器的性能

注意:第三种跳过Layout和paint,改变transform,只需composite.

如果您更改一个既不要布局也不要绘制的属性,则浏览器将跳到只执行合成。

  • 坚持使用 transform 和 opacity 属性更改来实现动画。
  • 使用 will-changetranslateZ 提升移动的元素。
  • 避免过度使用提升规则;各层都需要内存和管理开销。

使用 transform 和 opacity 属性更改来实现动画

性能最佳的像素管道版本会避免布局和绘制,只需要合成更改:

素材取自

By Paul Lewis 

By Ilya Grigorik