浏览器渲染机制以及重绘(Repaint)与重排(Reflow)

2019-10-28  本文已影响0人  ElricTang

一. 浏览器渲染过程

  1. 解析 HTML,生成 DOM Tree。
  2. 解析 CSS,生成 CSSOM(CSS Object Model)。
  3. 合并 DOM Tree 和 CSSOM,生成 Rendering Tree。
  4. 布局,计算节点的位置和大小信息。
  5. 绘制,将节点绘制到页面上。

Load 和 DOMContentLoaded


脚本的defer和async

二. 重绘(Repaint)

三. 重排(Reflow)

场景 描述
display:none 空间发生变化
页面首次渲染 必须发生
浏览器窗口resize 修改浏览器空间
元素尺寸变化 内外边距、边框、大小变化
<p>内容变化、<img>图片修改 内容动态变化引起空间变化
使用动画或JavaScript修改元素位置 位置变化引起重排
动态添加或删除DOM元素 浏览器需要重新计算位置

四. 优化

1. 使用JavaScript操作元素样式时通过修改class的方法合并操作
2. 使用transform完成位置移动
3. 简化并优化CSS选择器,尽量将嵌套层减少到最小
4. 先设置元素为display:none;然后再进行页面布局等操作;设置完成后将元素设置为display:block;这样的话就只引发两次重绘和重排;
5. 将需要添加动画的元素置于额外图层(脱离文档流)
6. 尽量不要使用table布局
7. 动态插入大量元素时使用DocumentFragment过渡

上一篇 下一篇

猜你喜欢

热点阅读