zoukankan      html  css  js  c++  java
  • 前端性能之重排和重绘

     前端性能之重排和重绘 https://www.cnblogs.com/soyxiaobi/p/9963019.html

    1:什么是重排、重绘
    当DOM的变化引发了元素几何属性的变化,比如改变元素的宽高,元素的位置导致浏览器不得不重新计算元素的几何属性,并重新构建渲染树,这个过程为重排.完成重排后,要将重新构建的渲染树渲染到屏幕上,这个过程就是重绘.
    简单地说,重排负责元素的几何属性更新,重绘负责元素的样式更新。而且,重排必然带来重绘,但是重绘未必带来重排。比如,改变某个元素的背景(色、图),这个就不涉及元素的几何属性,所以只发生重绘。
    2:重排(回流)触发机制
    (1)添加或删除可见的DOM元素
    (2)元素位置改变
    (3)元素本身尺寸发生改变
    (4)内容改变
    (5)页面渲染器初始化
    (6)浏览器窗口大小发生改变
    3:如何进行性能优化
    (1)修改样式使用CSSText属性 eg: var el = document.querySelector('.el'); el.style.cssText = 'border-left: 1px; border-right: 2px; padding: 5px';
    (2)切换class类名 也可以减少重排
    (3)批量修改DOM
        1)可以先隐藏元素(display:none),进行修改后,然后再显示该元素
        2)使用文档片段document.createDocumentFragment()创建,再进行添加
        3)  将原始元素拷贝到cloneNode()一个独立的节点中,操作该节点然后覆盖原始元素
    let old = document.querySelector('#mylist');
    let clone = old.cloneNode(true);
    appendNode(clone, data);
    old.parentNode.replaceChild(clone, old);
    

      

  • 相关阅读:
    如何让django方法自动地定期执行
    Python的PIL库实现验证码图片
    解决Python2.7的UnicodeEncodeError: 'ascii' codec can’t encode异常错误
    js分页页码算法
    Django站点管理--ModelAdmin
    Django时间查询
    django orm总结
    django Q和F查询
    ubuntu安装redis
    买入股票必须遵循的原则
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/12965303.html
Copyright © 2011-2022 走看看