zoukankan      html  css  js  c++  java
  • 重绘和回流

    1、浏览器把获取到的html代码解析成1个Dom树。

    2、浏览器把样式解析成样式结构体,在解析过程中会去掉各自浏览器不能识别的样式比如-moz,-webkit等。

    3、2者结合后构建呈现render tree。

    4、render tree构建完毕,浏览器就可以根据render tree绘制页面。

    其中脚本执行过程可能阻塞Dom的解析和构建和阻塞css处理,(比如遇到同步一个document.write或者javascript脚本查询任何元素的计算样式)。结果导致Dom和CssDom的构建频繁的交织在一起,Dom构建在javascript执行完毕前无法进行,而javascript在cssDom构建完成前也无法进行。

    首次加载的渲染时间、脚本执行都会受到样式表的阻塞,因此必须让css以最快的速度下载。也就是为什么要使用的“样式放在head里,js脚本放在最后/body前”。

    重绘和回流

    1、当render tree中的元素的尺寸、显隐等改变而需要重新构建,称为回流。每个页面至少需要一次回流,也就是页面第一次加载的时候。

    2、当render tree中的元素的属性改变只影响外观、风格,而不影响布局,称为重绘。

    那么回流必定引起重绘,而重绘不一定引起回流。

    任何对render tree元素的操作都会引起重绘或者回流,所以减少对render tree的操作能减少重绘、回流。

    比如:javascript修改元素style属性,如果已经定义好的样式,用js操作改变className;

    新建一个最外层的大div,这个div会首先添加所有新元素,最后才把这个div append到页面上;

    或者先display:none隐藏元素,然后对这个元素进行操作,最后显示该元素;

    有些属性值可以定义到变量中进行缓存,需要用的时候读取这个变量。

  • 相关阅读:
    2019-2020-1 20199329《Linux内核原理与分析》第十二周作业
    2019-2020-1 20199329《Linux内核原理与分析》第十一周作业
    2019-2020-1 20199329《Linux内核原理与分析》第九周作业
    2019-2020-1 20199329《Linux内核原理与分析》第八周作业
    PHP基础学习笔记5
    MYSQL内置函数【转】
    PHP基础学习笔记3
    常用端口大全【转】
    NMAP输出结果中CPE的含义【转】
    探测主机信息
  • 原文地址:https://www.cnblogs.com/wanbi/p/4176090.html
Copyright © 2011-2022 走看看