重排和重绘

定义:

  当DOM的变化引发了元素几何属性的变化,比如元素的宽高,元素的位置,导致浏览器不得不重新计算元素的几何属性,并重新构建渲染树,这个过程称为“重排”。完成重排后,要将构建的渲染树渲染到屏幕上,这个过程称为“重绘”。

  简单来说,重排负责元素的几何属性更新,重绘负责元素的样式更新。并且,重排必然带来重绘,但重绘未必带来重排。比如,改变某个元素的背景,这个就不涉及元素的几何属性,所以只发生重绘。

触发机制:

  重排发生的根本原理就是元素的几何属性发生了改变,那么我们就能从改变元素几何属性的角度入手。

  1. 添加或删除可见的DOM元素
  2. 元素位置改变
  3. 元素本身尺寸发生改变
  4. 内容改变
  5. 页面渲染初始化
  6. 浏览器窗口大小发生改变

最小化重绘和重排:

  1. 浏览器自动对重排进行优化,对改变的DOM节点进行依赖收集,确认没有改变的节点,就进行一次更新。
  2. js代码优化。(主要包括:尽量减少、避免无意义的DOM操作;方案优化,用其他可行方法替代DOM操作;将多次dom操作收集到一块,一次性执行多次DOM操作)
posted @ 2021-10-08 15:57  亦茫茫  阅读(151)  评论(0编辑  收藏  举报