重绘与回流 防抖与节流的 区别

292 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

大家好,我是大帅子,今天给大家讲一下,把大家几个容易弄混的几个点,接下来,我就用通俗一点的话跟大家讲一下,有什么不懂的,欢迎大家留言讨论


1. 回流

元素大小或位置发生改变(就是页面的布局发生改变的情况下),触发了重新布局导致渲染树重新计算布局和渲染,有以下几种情况

如添加或删除可见的DOM元素;
元素的位置发生变化;
元素的尺寸发生变化、
内容发生变化(如文本变化或图片被另一个不同尺寸的图片所代替);
页面一开始渲染的时候(无法避免);

2.重绘

元素只改变自身的样式,不会影响到其他的元素,有以下几种情况

元素样式的改变(但宽高、大小、位置不变)
 visibilitycolorbackground-color

3.防抖

在单位时间内,高频事件只触发最后一次


常用的就有 : 输入框事件

image.png

function throttle(fn,delay){
  let flag = true;

  return function(){
    if(flag){
      flag = false;
      setTimeout(() =>{
        flag = true
      },delay)
      return fn()
    }
  }  
}

4.节流

减少一段时间内触发的频率,就是一定的时间里面只触发一次
滚动条事件

image.png

function debounce(fn,delay){
  let timer = null;
  return function(){
    if(timer){
      clearTimeout(timer)
    }\
    timer = setTimeout(fn,delay)
  }
}

好了,这边已经给大家介绍到这里,以上是我自己的理解,希望可以帮到大家, 欢迎留言我这边一定会第一时间给大家解答,喜欢的可以点赞收藏
🐣---->🦅         还需努力!大家一起进步!!!