重绘与回流(重排)

这时候你要先了解防抖、节流(可以看看我的文章

防抖 任务频繁触发的情况下,只有任务触发的间隔超过指定间隔的时候,任务才会执行(比如说我们一直点击按钮  只有不点击按钮之后1秒才会触发)

节流 指定时间间隔内只会执行一次任务(比如说我们一直点击按钮  1秒之后会触发一次  然后1秒之后又会触发一次......)

 

重绘与回流

重绘(repaint):当元素样式的改变不影响布局时,浏览器将使用重绘对元素进行更新,此时由于只需要 UI 层面的重新像素绘制,因此损耗较少(元素背景颜色,字体颜色等的改变,不会影响到布局的就喊重绘)

常见的重绘操作:

  1. 改变元素颜色
  2. 改变元素背景色
  3. more ……

 

回流(reflow):别名又叫重排。当元素的尺寸、结构或者触发某一些属性时,浏览器会重新渲染页面,称为回流。此时,浏览器需要重新经过计算,计算后还需要重新页面布局,因此是较重的操作。(元素宽高、位置等的改变,会影响到布局的就喊回流)

常见的回流操作:

  1. 页面初次渲染
  2. 浏览器窗口大小改变
  3. 元素尺寸/位置/内容发生改变
  4. 元素字体大小变化
  5. 添加或者删除可见的 DOM 元素
  6. 激活 CSS 伪类(:hover……)
  7. more ……

 

这个与防抖跟节流有什么关系?

      举个例子:界面上有个 div 框,用户可以在 input 框中输入 div 框的一些信息,例如宽、高等,输入完毕立即改变属性。但是,因为改变之后还要随时存储到数据库中,所以需要调用接口。如果不加限制......

为什么需要节流?

      因为有些事情会造成浏览器的 回流,而 回流 会使浏览器开销增大,所以我们通过 节流 来防止这种增大浏览器开销的事情

 

 

好 说到这里,估摸大家都理解了 什么是重绘? 什么是回流?什么是防抖?什么是节流?如何配合防抖、节流来优化重绘和回流(减少浏览器消耗)

那我们在工作中如何避免大量使用重绘与回流呢?

1.避免频繁操作样式,可汇总之后统一修改

2.尽量使用class进行样式修改,而不是直接操作样式

3.减少DOM的操作,可使用字符串一次性插入

 

参考:

一篇文章搞定前端面试(https://juejin.im/post/5bbaa549e51d450e827b6b13

2019 面试准备 - JS 防抖与节流(https://juejin.im/post/5c87b54ce51d455f7943dddb

浏览器渲染页面过程剖析(https://www.jianshu.com/p/32ca5f1c0768

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

An_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值