当前位置: 首页 > news >正文

网页的重绘和回流

闭包

 
   function f1(){
        var n=999;
        nAdd=function(){n+=1}
        function f2(){
            alert(n);
        }
        return f2;
    }


    var result=f1();
    result();
    nAdd();
    result();



其中的结果是:

    第1次弹出999

    第2次弹出10

    第一次运行的时候,f2直接显示出n的值,第二次,是因为调用了    nAdd();,使n的值发生了改变。所以,显示出来的值是,变化过的值。

 

 当无法获取函数里面的值的时候,可以用内部函数返回值的方法,来获取函数里面的值。

 

回流与重绘

  首先要记住的是:

     回流:就是在加载元素的尺寸、布局、隐藏等。

     重绘:只会影响元素外观,改变元素颜色和外观等。

       有回流就会有重绘,有重绘不一定会有回流。

            1、添加、删除元素(回流+重绘)

             2、隐藏元素,display:none(回流+重绘),visibility:hidden(只重绘,不回流)

             3、移动元素,⽐比如改变top,left(jquery的animate⽅方法就是,改变top,left不⼀一定会影响回流),或者移动元素到另外1个⽗父元素中。(重绘+回流)

             4、style的操作(对不同的属性操作,影响不⼀一样)

             5、还有⼀一种是⽤用户的操作,⽐比如改变浏览器⼤大⼩小,改变浏览器的字体⼤大⼩小等(回流+重绘)

 

 

 

在编写就js的时候:

          //不好写法:

            var left=1;

            var top=1;

     el.style.left=left+"px";

     el.style.left=top+"px";

 

   //比较好的写法:

 

            var className=left;

            var className1=1;

  el.className+="className1"

  网页在加载的时候,会进行重绘和回流,我们需要减少网页的重绘和回流,加快网页的加载速度。提高用户的体验度。

  浏览器都会优化这些操作,浏览器会把回流和重绘放在一个队列里面,进行一个批处理。

           当设置以下代码时,会强制浏览器提前处理队列的重绘和回流:

                  1、offsetTop,offsetLeft,offsetWidth,offsetHeight

                  2、scrollTop/left/width/height

                  3、clientTop/left/width/height

                  4、width,height

                  5、请求了getComputedStyle(),IE的currentStyle
    

     在网页加载的时候,要记住网页本身就会有一次重绘和回流。

转载于:https://www.cnblogs.com/liner730/p/4678209.html

相关文章:

  • Skype for Business Server 2015系列(三)部署前端服务器-2
  • 3.2.用户空间客体管理器
  • Nginx的流媒体插件nginx-rtmp-module
  • iOS开发UITableView基本使用方法总结
  • centos6.5下postgres-XC集群安装与配置(有standby案例)
  • 最近用到Bootstrap Multiselect来详细了解一下
  • python特殊注释
  • MySql | 查询缓存笔记
  • 我的Android进阶之旅------FastJson的简介
  • WebX5 Data判断当前行的值是否改变,以及改变当前行的状态
  • AngularJS学习笔记
  • 前辈的Linux学习心得
  • mysql修改为utf8格式
  • python分析accesslog并排序
  • kali debian linux 的samba 共享设置
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java IO学习笔记一
  • opencv python Meanshift 和 Camshift
  • Rancher-k8s加速安装文档
  • Vue官网教程学习过程中值得记录的一些事情
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 技术胖1-4季视频复习— (看视频笔记)
  • 区块链共识机制优缺点对比都是什么
  • 人脸识别最新开发经验demo
  • 如何设计一个微型分布式架构?
  • 通信类
  • 我这样减少了26.5M Java内存!
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • AI算硅基生命吗,为什么?
  • 浅谈sql中的in与not in,exists与not exists的区别
  • (bean配置类的注解开发)学习Spring的第十三天
  • (C语言)fgets与fputs函数详解
  • (python)数据结构---字典
  • (南京观海微电子)——I3C协议介绍
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十一)c52学习之旅-动态数码管
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)LINQ之路
  • (转)nsfocus-绿盟科技笔试题目
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***详解账号泄露:全球约1亿用户已泄露
  • **PHP分步表单提交思路(分页表单提交)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .Net 4.0并行库实用性演练
  • .net core 6 集成和使用 mongodb
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET下ASPX编程的几个小问题
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • ?php echo ?,?php echo Hello world!;?