美文网首页
reflow(回流)和repaint(重绘)

reflow(回流)和repaint(重绘)

作者: Rebirth_914 | 来源:发表于2022-11-21 16:09 被阅读0次

在浏览器渲染页面的过程中,页面中的代码进行渲染时,已经使浏览器不堪重负了,如果当用户使用时,替换一个背景颜色,或者更换一个样式,那么我们的浏览器又需要重新加载代码,而在这个过程中,浏览器又一次的受到了压力,日复一日说不定哪天就崩掉了。 而主要影响页面渲染速度的为:reflow和repaint

1.reflow(回流)

为什么页面加载会慢,因为浏览器需要花时间、花精力去渲染,尤其是当它发现某个部分发生变化时影响到布局,就需要倒回去重新渲染,这个’倒回去渲染的过程‘就叫做reflow(回流)

2.repaint(重绘)

如果变化的元素,只是更改了元素的背景色,文字颜色、边框颜色等等不影响它周围或者内部布局的属性,那这种行为只会引起repaint(重绘),所以repaint的速度明显比reflow快

3.尽量减少reflow

1.reflow是导致DOM脚本执行力较低的关键因素之一,页面上任何一个结点触发reflow,都会导致它全部节点重新渲染。以下情况会导致reflow发生:

1.改变窗口大小
2.改变文字大小
3.添加/删除样式
4.内容的改变,如用户在输入框进行输入文字
5.激活伪类,如hover,active等
6.操作class属性
7.脚本操作DOM
8.计算offsetWidth或者offsetHeight
9.设置style属性

2.reflow是不可避免的,只能将reflow对性能的影响见到最小:

  • 尽可能限制reflow的影响范围,需要改变元素的样式,不要通过父级元素影响子元素,最好直接加在子元素上。
  • 通过设置style属性改变节点样式的话,每设置一次都会导致一次reflow。所以最好通过设置class的方式进行改变。

3.该如何好的避免reflow

  • 实现元素的动画,将定位position设为fixed或者absolute,就不会影响其他元素的布局。
  • 权衡速度的平滑,比如实现一个动画,以1像素为单位移动最平滑,但是reflow会频繁回流,我们可以进行节流设置,动画移动固定时间进行判断一次,到达最终点为准。
  • 不要用tables布局的另一个原因就是tables中某个元素一旦触发reflow就会导致table里所有的其它元素reflow。在适合用table的场合,可以设置table-layout为auto或fixed,这样可以让table一行一行的渲染,这种做法也是为了限制reflow的影响范围。
  • 减少不必要的 DOM 层级(DOM depth)。改变 DOM 树中的一级会导致所有层级的改变,上至根部,下至被改变节点的子节点。这导致大量时间耗费在执行 reflow 上面。
  • 减少不必要的 DOM 层级(DOM depth)。改变 DOM 树中的一级会导致所有层级的改变,上至根部,下至被改变节点的子节点。这导致大量时间耗费在执行 reflow 上面。

相关文章

  • 前端总结(后续继续更新)

    1,reflow和repaint:回流和重绘。回流:renderTree 重建。重绘:外观样式风格进行更新。(co...

  • 前端一些细节

    1,reflow和repaint:回流和重绘。回流:renderTree 重建。重绘:外观样式风格进行更新。(co...

  • 浏览器的渲染机制

    reflow(回流) 和 repaint(重绘):http://blog.csdn.net/ClaireKe/ar...

  • css中的repaint和reflow

    页面设计中,不可避免的存在浏览器重绘repaint和回流reflow 介绍 repaint:针对某个元素进行重绘。...

  • 浏览器原理

    介绍下重绘和回流(Repaint & & Reflow ),以及如何进行优化 参考文档: https://mp.w...

  • 浏览器的回流与重绘 (Reflow & Repaint)

    浏览器的回流与重绘 (Reflow & Repaint) 写在前面 在讨论回流与重绘之前,我们要知道: 浏览器使用...

  • 页面回流

    理解浏览器的重绘与回流(repaint&&reflow) 今天在做练习的时候,遇到了重绘与回流这个词,表示连个毛都...

  • ★ 重绘和回流 ( Repaint & Reflow )

    概念区别 重绘:Repaint 当 render tree 中的一些元素需要更新属性,这些属性只影响元素的外观、风...

  • reflow(回流)和repaint(重绘)

    在浏览器渲染页面的过程中,页面中的代码进行渲染时,已经使浏览器不堪重负了,如果当用户使用时,替换一个背景颜色,或者...

  • 重绘(repaint) & 回流(reflow)

    1 重绘(repaint) 概念: 当元素样式的改变不影响布局时, 浏览器将使用重绘对元素进行更新, 此时发生的过...

网友评论

      本文标题:reflow(回流)和repaint(重绘)

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