合成(composition)意味着将网页中已经绘画好的部分结合在一起,且展示在屏幕上。

  • 坚持使用transform和opacity属性来操作你的动画animation
  • 在有动画的元素上使用 will-change 或 translateZ属性
  • 不要为所有元素创建合成器层:layers需要内存和管理

在合成领域有两个换件的因素将影响你的性能:

所需要处理的合成层的数量,动画时你使用的属性。

动画的改变使用transform和opacity属性。

对像素管道而言最好是避免layout和paint,只需要合成的改变。

为了实现上面的效果,你应该坚持使用那些能被合成器直接处理的属性,现在只有两个属性能被合成器直接处理:transform和opacity。

唯一要注意的是,每当在元素上使用transform和opacity的时候都应该在元素独自的合成器层(compositor layer)使用。

为了确保这一点,你必须首先允许元素拥有合成器层。

Note

  • 如果你担心你的动画效果不能直接只使用这两个动画属性,那么检查 FLIP principle 网页,它会告诉你不同的复杂的动画效果怎样通过这两个基本的属性实现。

确保你的元素可以拥有合成器层

你应该在你要使用动画的元素上加上以下样式:

.moving-element {
will-change: transform;
}

针对旧的浏览器:

.moving-element {
transform: translateZ(0);
}

上面的代码将告诉浏览器我要进行动画了,浏览器会做一些准备,例如,创建一个合成器层。

管理layers

It’s perhaps tempting, then, knowing that layers often help performance, to promote all the elements on your page with something like the following:

* {
will-change: transform;
transform: translateZ(0);
}

为了节省起见,你可能会使用上面的代码为所有的元素创建合成器层,但是你要知道每一个层都是需要内存和管理的,对于低内存的设备这样做是不好的!所以,不要为那些没有必要的元素创建合成器层。

使用开发者工具了解你的应用中的layers

为了理解你的应用中的所有layer,以及为什么一个元素中有一个layer,你首先要在Timeline上允许Paint,如下:

首先你要开始记录(刷新页面开始记录)记录结束之后,你可以点击单独的帧。单独的帧是在时间和详细信息板块之间,如下:

点击之后在最下面将会展示layer的tab选项

允许你在每一帧上面的layer进行查看

使用上面你可以追踪你有多少的layers。如果你在performance-critical动作(例如scroll和transitions)中耗费太多的时间来合成(你的目标是4-5毫秒),你可以查看你有多少layer,它们为什么被创建以及进行修改。

https://developers.google.com/web/fundamentals/performance/rendering/stick-to-compositor-only-properties-and-manage-layer-count?hl=en

页面渲染——页面合成(composition)的优化的更多相关文章

  1. 浏览器渲染页面原理,reflow、repaint及其优化

    浏览器的主要组件包括: 1.      用户界面 - 包括地址栏.前进/后退按钮.书签菜单等.除了浏览器主窗口显示的你请求的页面外,其他显示的各个部分都属于用户界面. 2.      浏览器引擎 - ...

  2. 【前端性能】高性能滚动 scroll 及页面渲染优化

    最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...

  3. 【前端性能】高性能滚动 scroll 及页面渲染优化--转发

    本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的关系,节流与防抖,pointer-events:none 优化滚动.因为本文涉及了很多很多基础,可以对照上面的知 ...

  4. 高性能滚动 scroll 及页面渲染优化

    最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...

  5. 前端高性能滚动 scroll 及页面渲染优化

    前言 最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作.本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲 ...

  6. JS基础——浅谈前端页面渲染和性能优化

    加载html中的静态资源 其中,加载静态资源的过程,一般为浏览器根据DNS服务器得到域名的IP地址,然后向这个IP的机器发送http请求,服务器收到.处理并返回http请求,浏览器得到返回http请求 ...

  7. 网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面

    网页中引用的外部文件: JavaScritp.CSS 等常常会阻塞浏览器渲染页面.假设在 <head> 中引用的某个 JavaScript 文件由于各种不给力需要2秒来加载,那么浏览器渲染 ...

  8. 多进程浏览器、多线程页面渲染与js的单线程

    线程与进程 说到单线程,就得从操作系统进程开始说起.在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位.任务调度采用的是时间片轮转的抢占式调度方式,而进程 ...

  9. 一文摸透从输入URL到页面渲染的过程

    一文摸透从输入URL到页面渲染的过程 从输入URL到页面渲染需要Chrome浏览器的多个进程配合,所以我们先来谈谈现阶段Chrome浏览器的多进程架构. 一.Chrome架构 目前Chrome采用的是 ...

随机推荐

  1. 类加载器在加载类 的时候就已经对类的static代码块和static变量进行了初始化

    类装载器ClassLoader 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: [1.]装载:查找和导 ...

  2. 邁向IT專家成功之路的三十則鐵律 鐵律十:IT人思維之道-跳脫框架

    莊子的哲學思想歸本於老子,他認為人要解脫束縛必須做到不從任何的角度與任何的時間來看待事物,而是必須與天地同體,然而也唯有如此才能看清宇宙間萬事萬理的真諦.無論是莊子還是老子,他們畢竟是中國古代的聖賢, ...

  3. Access自定义函数(人民币大写)

    人民币大写函数:整数不超过13位. Public Function 人民币大写(A) As String Dim aa As String Dim bb As String Dim cc As Str ...

  4. Kaggle的Outbrain点击预测比赛分析

    https://yq.aliyun.com/articles/293596 https://www.kaggle.com/c/outbrain-click-prediction https://www ...

  5. vue2.0 自定义 弹窗(MessageBox)组件

    组件模板 src/components/MessageBox/index.vue <!-- 自定义 MessageBox 组件 --> <template> <div c ...

  6. Odoo MRP 实际成本

    Odoo MRP 8 对于 产成品并不支持 实际成本记账 本人开发了一个模块,支持此特性, 可以在 淘宝店铺 购买 https://item.taobao.com/item.htm?_u=85jr9d ...

  7. 【NoSql】Redis实践篇-简单demo实现(一)

    Redis是一个key-value存储系统. Redis的出现,非常大程度补偿了memcached这类key/value存储的不足,在部分场合能够对关系数据库起到非常好的补充作用 Redis是一个ke ...

  8. C语言函数的递归和调用

    函数记住两点: (1)每个函数运行完才会返回调用它的函数:每个函数运行完才会返回调用它的函数,因此,你可以先看看这个函数不自我调用的条件,也就是fun()中if条件不成立的时候,对吧,不成立的时候就是 ...

  9. 福昕熊雨前:PDFium开源项目的背后

    今天编译android的时候,无意中看到命令行提示出输出编译external/pdfium这个目录,于是乎上百度搜索了一下,找到了如下关于PDF文件解析的开源代码的文章: http://www.csd ...

  10. 05 referer头与防盗链

    像上图中的这个效果,当我们在网页里引用站外图片时,常出现这样的情况. ??? 服务器是怎么样知道,这个图片是在站外被引用的呢? 还有在网站的统计结果,统计用户从何而来,如下图 ??? 统计时,是如何得 ...