美文网首页
重排与重绘

重排与重绘

作者: NSO | 来源:发表于2018-04-17 22:41 被阅读19次

前端程序员都经常碰到性能优化的问题,随着低版本浏览器被逐步淘汰,因为浏览器内核的算法越来越先进,前端程序员在这方面的担子也越来越轻,相应地程序员工作中探索这方面问题本质的机会也变少,所以这篇文章就把这个基础问题再拿出来讨论一下。

这里有两个关键字:重排(reflow)/重绘(repaint),我们先来认真讨论一下这两个词的定义。

首先,浏览器加载网页后有两个大动作:解析DOM树和渲染渲染树。那什么是DOM树渲染树呢?
参考下图(来源:https://blog.csdn.net/sinat_37328421/article/details/54575638):

DOM树和渲染树.png
简言之,DOM树就是html的标签结构,渲染树则是DOM树结合css样式。所以,重绘仅指页面重新渲染,重排指DOM树结构发生变化或者DOM树内部元素占位大小/排列发生变化。
这里我们结合上面的图要给出一个重要结论,重排必定引发重绘,但是重绘可以单独发生不一定伴随重排。这个原理我们要记住,因为涉及到优化的思路一定要减少重排,重排的开销一定大于单独重绘

在谈具体优化方案前,我们再看一下什么情况会触发重排:

  1. 浏览器窗口大小改变
  2. 元素占位改变(高/宽改变)
  3. DOM树中元素发生变化
  4. 页面首次加载
  5. DOM元素内嵌内容改变(例如引用图片发生改变)

理解上述内容就可以思考如何减少浏览器重排重绘的开销:

  1. 改变样式时把style组合在一起同一赋值,不要一个一个修改
  2. 直接改变class或者id
  3. 让需改变的元素脱离文档流,这样文档流中的内容不会受影响(常见例子,动画场景的父元素最好脱离文档流)

最后,随着浏览器内核越来越先进,前端程序员可以省心很多,很多场景不必再刻意优化,但是注重浏览器性能是一个好的前端程序员必备素质

相关文章

  • 前端收藏文章

    优化CSS重排重绘与浏览器性能

  • 浏览器页面的重绘和重排

    对于页面,我们经常有CSS对网页进行呈现样式效果,这就涉及到了页面的重绘和重排 重绘(repaints)与重排(r...

  • 重排与重绘

    前端程序员都经常碰到性能优化的问题,随着低版本浏览器被逐步淘汰,因为浏览器内核的算法越来越先进,前端程序员在这方面...

  • 重绘与重排

    通常在文档初次加载时,浏览器引擎会解析HTML文档来构建DOM树,之后根据DOM元素的几何属性构建渲染树。渲染树的...

  • 网页性能优化

    概念:重排(reflow):重新生成布局重绘(repaint):重新绘制"重绘"不一定需要"重排",比如改变某个网...

  • 浏览器重排(回流)重绘以及优化方案

    一、什么是重排和重绘 要说清重排(reflow)和重绘(repaint),首先要理解排列和绘制,浏览器渲染页面时,...

  • 浏览器的重绘和重排

    重绘和重排 重排是因为元素的几何属性改变,导致渲染树中的节点发生改变,从而影响到其它节点发生重绘。重排对性能影响极...

  • web性能优化 - 重排与重绘

    重排与重绘 重排 [重构/回流/reflow]:当DOM变化影响了节点的几何属性,浏览器需要重新计算节点的几何属性...

  • CSS重排与重绘

    现代浏览器通常拥有两个重要的执行线程,这两个线程相互配合来渲染出页面: 1、主线程 通常情况下,主线程主要负责以下...

  • 重绘重排

    浏览器对页面呈现的处理: a). 浏览器把获取到的HTML代码解析成1个DOM树,HTML中的每个标签都是DOM树...

网友评论

      本文标题:重排与重绘

      本文链接:https://www.haomeiwen.com/subject/uwjukftx.html