• web前端优化--DOM性能优化


    1、DOM访问与修改的优化:

    DOM访问是有代价的,修改DOM则会引起DOM的重绘与重排,而这两种操作会消耗性能。

    (1)缓存DOM:将频繁访问的对象或属性使用变量缓存起来,每次访问的时候,直接使用变量,而不是再次去访问DOM。

    (2)减少重绘与重排:

        批量修改:使用文档片段documentFragment、使用类名一次性修改多个样式、或者使用CSSText属性

      如 ele.style.cssText = 'color:red;border:1px solid green';

         元素脱离文档流,再做修改:将元素隐藏或者克隆一份,在对其进行修改,完成修改后再显示。(对隐藏元素的操作不会引起重绘重排)

    (3)选择器的使用,使用更快的querySelectorAll('#div1 .active')。

      注意:使用getElementsByTagName等返回HTML集合的方法时,这些返回的HTML集合会实时连接着底层文档,比如增加了一个元素,HTML结合会立即反应出来。

    可以使用变量缓存,或者将HTML集合拷贝到一个数组中,访问数组的效率会比访问HTML集合要快

    下面这段代码会陷入死循环:

    function loopAlways(){
          var odivs = document.getElementsByTagName('div');
          for(var i=0;i<odivs.length;i++){ console.log(odivs.length);  //odivs是一个HTML集合,实时和文档连接,记录最新变化
          var d = document.createElement('div');
           document.body.appendChild(d);
         }
    
        }

    改成下面这种,将集合长度缓存下来,就不会出现上面的情况

     var odivs = document.getElementsByTagName('div');
          for(var i=0,len=odivs.length;i<len;i++){ 
            var d = document.createElement('div');
            document.body.appendChild(d);
         }

    (4)使用事件委托:避免对同类元素同时绑定事件,而是使用事件冒泡机制,在父元素上绑定。

     (5) innerHTML 与DOM :innerHTML稍快 (除了Webkit内核的浏览器)

      

  • 相关阅读:
    实验12——java取整、猜数和猜拳
    实验11——java线程模拟卖票
    实验10—— java读取歌词文件内容动画输出
    实验09——java基于TCP实现客户端与服务端通信
    JavaSE第十四天
    javaSE第十一天
    JavaSE第十天
    JavaSE第十天
    JavaSE第九天
    JavaSE第八天
  • 原文地址:https://www.cnblogs.com/lydialee/p/4808042.html
Copyright © 2020-2023  润新知