• 优化CSS重排重绘与浏览器性能



    原文链接:http://caibaojian.com/css-reflow-repaint.html

    浏览器的渲染机制

    via浏览器渲染展示网页的过程,大致分为以下几个步骤:原文来自:http://caibaojian.com/css-reflow-repaint.html

    1. 解析html(HTML Parser)
    2. 构建DOM树(DOM Tree)
    3. 渲染树构建(Render Tree)
    4. 绘制渲染树(Painting)

    原文来自http://caibaojian.com/css-reflow-repaint.html

    慎重选择高消耗的样式

    什么 CSS 属性是高消耗的?就是那些绘制前需要浏览器进行大量计算的属性。

    • box-shadows
    • border-radius
    • transparency
    • transforms
    • CSS filters(性能杀手)

    什么是reflow

    浏览器为了重新渲染部分或整个页面,重新计算页面元素位置和几何结构的进程叫做reflow.

    通俗点说就是当开发人员定义好了样式后(也包括浏览器的默认样式),浏览器根据这些来计算并根据结果将元素放到它应该出现的位置上,这个过程叫做reflow.

    由于reflow是一种浏览器中的用户拦截操作,所以我们了解如何减少reflow次数,及DOM的层级,css效率对refolw次数的影响是十分有必要的。

    reflow(回流)是导致DOM脚本执行效率低的关键因素之一,页面上任何一个节点触发了reflow,会导致它的子节点及祖先节点重新渲染。

    简单解释一下 Reflow:当元素改变的时候,将会影响文档内容或结构,或元素位置,此过程称为 Reflow。

    //code from http://caibaojian.com/css-reflow-repaint.html
    <body>
      <div class="hello">
        <h4>hello</h4>
        <p><strong>Name:</strong>BDing</p>
        <h5>male</h5>
        <ol>
          <li>coding</li>
          <li>loving</li>
        </ol>
      </div>
    </body>
    

    当p节点上发生reflow时,hello和body也会重新渲染,甚至h5和ol都会收到影响。

    什么时候会导致reflow发生呢?

    • 改变窗口大小
    • 改变文字大小
    • 添加/删除样式表
    • 内容的改变,(用户在输入框中写入内容也会)
    • 激活伪类,如:hover
    • 操作class属性
    • 脚本操作DOM
    • 计算offsetWidth和offsetHeight
    • 设置style属性

    常见的重排元素

    width height padding margin
    display border-width border top
    position font-size float text-align
    overflow-y font-weight overflow left
    font-family line-height vertical-align right
    clear white-space bottom min-height
  • 相关阅读:
    Openssl s_time命令
    Openssl speed命令
    Openssl s_client命令
    Openssl s_server命令
    Openssl smime命令
    关于静态与非静态之具体总结
    C++游戏系列2:角色装备武器
    POJ 2398 Toy Storage(计算几何)
    Oracle核心技术 笔记(该书读得不细致,须要找时间再细读~~)
    还在为开发APP发愁? 这里就有现成通用的代码!
  • 原文地址:https://www.cnblogs.com/wpbars/p/6295826.html
Copyright © 2020-2023  润新知