美文网首页
1.5 重绘和回流

1.5 重绘和回流

作者: 得到世界又如何我的心中只有你 | 来源:发表于2020-08-14 11:09 被阅读0次
    浏览器渲染方式

    首先介绍浏览器的组成部分:

    1.用户界面(包含窗口、标签页等)
    2.浏览器引擎(查询、操作渲染引擎)
    3.渲染引擎(解析、渲染请求的内容,包含:网络、JS解释器、UI后端)
    4.数据存储层(轻量的数据库,包含storage、cookies、websql、db等)

    不同浏览器渲染引擎不同,由浏览器内核决定,常见浏览器以及内核有:

    IE: Trident
    FirFox: Gecko
    Chrome/Safari: WebKit
    Opera: Presto

    当渲染引擎开始工作时:

    1.解析HTML生成DOM Tree
    2.解析CSS生成CSS Tree
    3.合并DOM树和CSS树生成Render Tree
    4.开始reflow,计算DOM节点的绝对位置
    5.通知GPU进程进行绘制显示

    回流 reflow

    当Render树的一部分或者全部因元素的大小/位置信息/布局等改变而需要进行重建的过程,称之为回流
    包含:

    1.dom节点的添加/删除
    2.元素的font-size、width、height、padding、margin、border的大小/宽度变化
    3.获取某些属性,包含:
    1).offsetWidth、offsetHeight、offsetLeft、offsetTop
    2).scrollWidth、scrollHeight、scrollLeft、scrollTop
    3).clientWidth、clientHeight、clientLeft、clientTop
    4.dom的resize事件触发

    重绘 repaint

    当元素的属性(如元素的颜色/背景)发生变化而导致GPU需要重新渲染的过程,称之为重绘
    回流必定导致重绘,重绘不一定引发回流

    如何尽可能避免 reflow

    1.当进行dom添加或者删除时,通过变量保存获取的dom节点,使用文档片段DocumentFragment进行内存的累加最后再追加到dom上
    2.当进行元素大小/宽度/布局操作时,定义class类将操作集合,通过一次切换class实现
    3.对offset/scroll/client等位置属性访问处理时,用变量进行缓存
    4.对需要动画操作的元素,尽可能使用position脱离文档流

    相关文章

      网友评论

          本文标题:1.5 重绘和回流

          本文链接:https://www.haomeiwen.com/subject/dofgrktx.html