重绘 ( Repaint) 和回流 ( Reflow)

简介: 首先了解 重绘 ( Repaint) 和回流 ( Reflow)其实是关乎到浏览器性能的问题重绘和回流是渲染步骤中的⼀⼩节,但是这两个步骤对于性能影响很大重绘和回流的过程都需要浏览器耗费大量的计算资源,过多的使用会导致网页性能下降

首先了解 重绘 ( Repaint) 和回流 ( Reflow)其实是关乎到浏览器性能的问题


重绘和回流是渲染步骤中的⼀⼩节,但是这两个步骤对于性能影响很大


重绘和回流的过程都需要浏览器耗费大量的计算资源,过多的使用会导致网页性能下降


区别


  • 重绘是当节点需要更改外观而不会影响布局的, 比如改变 一个div的background颜色 就叫称为重绘


重绘:是指更改一部分的元素的外观,不涉及布局的改变,性能消耗较小。


  • 回流是布局或者属性需要改变就称为回流


回流:是指页面布局的改变,需要重新计算元素的属性,性能消耗较大。



重绘 和回流 关系


回流必定会发生重绘, 重绘不⼀定会引发回流 。回流所需的成本比重绘高的多, 改变深层

次的节点很可能导致父节点的⼀系列回流


个人理解: 回流的时候整个页面都会发生改变 而回流只是页面里面一些元素的外观改变 所以

回流一定会引起页面元素的外观重新渲染或者改变也就是(重绘)

而重绘只是更改元素的外观 并不会影响整个页面


可能会引起重绘和回流的事件:


改变 window 大⼩


改变字体


添加或删除样式


文字改变


定位或者浮动


盒模型

亿点小知识:很多人不知道的是,重绘和回流其实和 Event loop 有关。


当 Event loop 执行完 Microtasks 后,会判断 document 是否需要更新 。- 因为浏览

器是 60Hz 的刷新率,每 16ms 才会更新⼀次


然后判断是否有 resize 或者 scroll ,有的话会去触发事件,所以 resize 和

scroll 事件也是至少 16ms 才会触发⼀次, 并且自带节流功能。


判断是否触发了 media query


更新动画并且发送事件


判断是否有全屏操作事件


执行 requestAnimationFrame 回调


执行 IntersectionObserver 回调,该方法用于判断元素是否可见, 可以用于懒加载

上, 但是兼容性不好


更新界面


以上就是⼀帧中可能会做的事情 。如果在⼀帧中有空闲时间,就会去执行

requestIdleCallback 回调。


优化性能和减少重绘和回流:


  • 使用 translate 替代 top


< div class="dome"> < /div>
<style>
.dome{
position: absolute;
top: 20px;
background: red;
}
</style>
<script>
setTimeout(() => {
// 会引起回流
document.querySelector( '.dome').style.top = '50px'
}, 1000)
</script>


  • 使用 visibility 替换 display: none , 因为前者只会引起重绘,后者会引发回流
    ( 改变了布局)

  • 避免使用table布局

  • 避免设置多层内联样式,避免节点层级过多

  • 避免使用css表达式


452fc0d979e945b6bc746cbab77564b3.gif

以上就是重绘 ( Repaint) 和回流 ( Reflow)感谢大家的阅读


如碰到其他的问题 可以私下我 一起探讨学习


如果对你有所帮助还请 点赞 收藏谢谢~!


关注收藏博客 作者会持续更新…

相关文章
|
PHP Windows 编解码
windows命令行方式下打印和设置PATH变量
点击开始菜单,运行=》cmd打印当前变量:echo %PATH%结果:C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;d:\PROGRA~1\ssh;D:\Program Files\tortoisesvn\bin;D:\Program...
3559 0
|
2月前
|
人工智能 API 开发者
阿里云OPC创新助力计划:申请加入即刻解锁最低1000元 、最高100万元Token补贴
阿里云OPC创新助力计划采用"先用后返"模式,面向已实名认证的个人及企业用户,提供最低1000元、最高100万元的Token阶梯补贴,覆盖文本、语音、编码等核心模型,视频模型暂不参与。活动时间为2026年5月20日至9月30日,按月达标返券,需通过指定入口报名。此外,2026年6月还推出小额普惠权益,满20返20、满100返100、满200返200,新老用户均可参与。双轨并行大幅降低AI开发与应用试错成本,建议有AI落地需求的用户尽早报名锁定补贴。
|
开发工具 C语言 git
Vcpkg 的安装与使用
Windows 下 Vcpkg 的安装与使用
2159 0
Vcpkg 的安装与使用
|
安全 搜索推荐 Android开发
Android系统SELinux安全机制详解
如此看来,SELinux对于大家来说,就像那位不眠不休,严阵以待的港口管理员,守护我们安卓系统的平安,维护这片海港的和谐生态。SELinux就这样,默默无闻,却卫士如山,给予Android系统一份厚重的安全保障。
534 18
|
6月前
|
存储 安全 测试技术
并行多智能体系统的协调测试实战:从轨迹捕获到CI/CD的六个步骤
本文探讨并行多智能体系统的协调测试难题:当多个LLM驱动的智能体协同决策时,单个正确≠集体安全。传统单元测试失效,需构建以轨迹捕获、行为不变量、回放回归、黄金数据集和CI/CD集成为核心的新型测试框架,专治容量超限、状态陈旧、 reducer 冲突等典型协调故障。
267 2
并行多智能体系统的协调测试实战:从轨迹捕获到CI/CD的六个步骤
|
安全 网络协议 Shell
|
缓存 网络协议 网络虚拟化
网络技术基础(15)——DHCP简介与配置
【3月更文挑战第3天】刚加完班又去南京出差了,实在是太忙了。。。。网络基础笔记(加班了几天,中途耽搁了,预计推迟6天),这篇借鉴了之前师兄的笔记。
|
人工智能 算法 前端开发
阿里云百炼|全妙:全面升级,助力伙伴推动产业落地
本次分享由阿里云智能集团资深产品专家秦璇主讲,主题为大模型在内容创作、数据分析、智能服务领域的应用。内容涵盖大模型市场概况、全妙产品介绍、部分案例及全妙建设重点与功能介绍。全妙产品包括妙策、妙笔、妙搜,旨在通过多模态技术和算法优化,助力企业和政府客户实现高效的内容创作和管理。
|
Java Spring
解密Spring Boot的定时任务
解密Spring Boot的定时任务
418 0
|
SQL Oracle 关系型数据库

热门文章

最新文章