Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

    • 编程语言

    • 开发工具

    • 前端调试

    • 浏览器原理

      • V8 执行引擎

      • 渲染机制

        • Edge 浏览器在亚像素宽度计算的表现差异
        • 从输入url后浏览器发生了什么
        • chromium 资源加载优先级
        • 你不知道的回流与重绘
          • 前言
          • 背景知识
          • 以前的分析
          • css3 硬件加速原理
          • 参考文献
        • 浅谈合成层
        • 浅谈屏幕刷新与浏览器渲染机制
        • 浅谈现代浏览器渲染过程
        • 精读 Event loops 规范
    • 浏览器生态

  • 应用框架

  • 工程能力

  • 应用基础

  • 专业领域

  • 业务场景

  • 大前端
  • 前端基础
  • 浏览器原理
  • 渲染机制
gahing
2019/12/17
目录

你不知道的回流与重绘草稿

# 前言

回流和重绘,在我刚刚接触前端的时候就听别人分享过了

比如大家经常看到的xxx

那么问你,xxx,一定会导致xxx么?

先说我作为渲染引擎我会怎么做,以及实际渲染引擎怎么做

本次测试基于 chrome 78

目前我的水平,应该只能分析处于 dirty 的布局树,获取其上属性不会触发 layout

修改布局属性后,再次获取会触发。。

先不写了,后面变强了再写

# 背景知识

# 以前的分析

而在宏任务中操作 dom,设置样式等,只可能进行解析(Parse HTML),计划计算样式(Schedule Style Recalculation)等,还不会开始计算样式,进行布局和绘制等

但是,如果在宏任务中去获取具体布局相关属性,比如宽高位置,会进行布局和样式计算(同步操作),然后将值返回

同样,如果在宏任务中去获取具体非布局相关属性,比如颜色等,会进行样式计算(同步操作),然后将值返回

当然,这个的前提是触发了计划计算样式(Schedule Style Recalculation),如果这个没触发,直接去获取属性并不会造成回流重绘

并且,如果进行了重排重绘,在 UI Render 阶段不会再次进行样式计算(Recalculate Style)和生成布局树(Layout)了

注意一点,设置了某个节点的样式,然后去获取另一个节点的布局,会先进行样式计算,但不一定是会进行 Layout 的

渲染引擎很智能,会根据样式计算结果得知需不需要进行 Layout

比如前面节点设置的样式并没有涉及布局相关属性,那么后者获取布局属性并不需要先进行 Layout ,

原本以为处于绝对定位然后设置了布局相关属性,影响不到我们要获取的节点,不会进行 Layout,但事实会 Layout 说明渲染引擎没有那么智能

# css3 硬件加速原理

# 参考文献

强烈推荐。。 https://juejin.im/entry/590801780ce46300617c89b8

https://www.rrfed.com/2017/02/26/chrome-layout/

https://juejin.im/post/5c0f104551882509a7683d63

https://fed.taobao.org/blog/2016/04/26/performance-composite/

编辑 (opens new window)
#HTML#前端优化
上次更新: 2024/09/01, 23:56:56
chromium 资源加载优先级
浅谈合成层

← chromium 资源加载优先级 浅谈合成层→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式