怎样理解重流和重绘

下面是一些相关概念: 

1. 重流: reflow, 重绘: repaint

2. 重流必定导致重绘, 重绘不一定重流

3. 布局改变会发生重流, 元素颜色等改变只会发生重绘

 

下面是通过减少重流/重绘次数而优化页面性能的一些手段: 

1. 减少js中的dom操作, 若必须, 则尽量将读取dom和写入dom的操作放在一起, 便于浏览器累积dom变动, 一次执行, 减少重绘.

2. 缓存dom信息, 多次使用, 不要重复读取dom节点.

3. 不要一项一项地改变样式, 尽量用 css class一次性改变样式.

4. 使用documentFragment操作DOM

5. 动画使用absolute或fixed定位. 不然重流会很严重.

6. 只有在必要时才显示或隐藏元素, 这个操作必定会导致重流

7. 使用window.requestAnimationFrame()可以把代码推迟到下一次重流时执行.

8. 使用Virtual DOM(如 React / Vue)

 

posted on 2019-10-18 18:24  aisowe  阅读(851)  评论(0编辑  收藏  举报

导航