CSS 动画

195 阅读3分钟

浏览器渲染原理概述

关键渲染路径

  1. 处理 HTML 标记并构建 DOM 树。
  2. 处理 CSS 标记并构建 CSSOM 树。
  3. 将 DOM 与 CSSOM 合并成一个渲染树。
  4. 根据渲染树来布局,以计算每个节点的几何信息。
  5. 将各个节点绘制到屏幕上。

优化关键渲染路径就是指最大限度缩短执行上述第 1 步至第 5 步耗费的总时间。 这样一来,就能尽快将内容渲染到屏幕上,此外还能缩短首次渲染后屏幕刷新的时间,即为交互式内容实现更高的刷新率。

优化关键渲染路径

优化关键渲染路径的常规步骤如下:

  1. 对关键路径进行分析和特性描述: 资源数、字节数、长度。
  2. 最大限度减少关键资源的数量: 删除它们,延迟它们的下载,将它们标记为异步等。
  3. 优化关键字节数以缩短下载时间(往返次数)。
  4. 优化其余关键资源的加载顺序: 您需要尽早下载所有关键资产,以缩短关键路径长度。

CSS

CSS 是阻塞渲染的资源。需要将它尽早、尽快地下载到客户端,以便缩短首次渲染的时间。

JavaScript

JavaScript 也会阻止 DOM 构建和延缓网页渲染。 为了实现最佳性能,可以让您的 JavaScript 异步执行,并去除关键渲染路径中任何不必要的 JavaScript。

查看各属性会触发的路径

CSS Triggers

为了网页性能,需要尽量操作靠后的路径,尽量少的操作 DOM 和 CSSOM

上面的网站把各个属性会触发的路径做了一个梳理,方便查阅

引用

以上内容引用自 关键渲染路径 | Web | Google Developers

transform

常用属性

  • translate 位移
  • scale 缩放
  • rotate 旋转
  • skew 倾斜

经验

一般都需要配合 transition 过渡

inline 元素不支持 transform,需要先变成 block

translate(位移)

常用写法

translate | translateX | translateY

经验

translate(-50%, -50%) 可做绝对定位元素居中

scale(缩放)

常用写法

scale| scaleX| scaleY

经验

用的较少,因为容易出现模糊

rotate(旋转)

常用写法

rotate

经验

一般用于做 Loading 动画

rotate(倾斜)

常用写法

skew | skewX | skewY

经验

用的较少

transition(过渡)

配合 transform 使用,用于补充中间帧

语法

transition: 属性名 时长 过渡方式 延迟

transition: margin-right 1s linear 1s

transition: all 1s

animation(动画)

缩写语法

animation:时长 | 过渡方式 | 延迟 | 次数 | 方向 | 填充模式 | 是否暂停 | 动画名

  • 时长:1s 或 1000ms
  • 过渡方式:linear
  • 次数:1 或 infinite
  • 方向: reverse | alternate | alternate-reverse
  • 填充模式:none | forwards | backgrounds | both
  • 是否暂停:paused | running

@keyframes (关键帧)

在动画序列中定义关键帧,搭配 animation 使用

语法 1

@keyframes slidein {
  from {
    transform: translateX(0%); 
  }
​
  to {
    transform: translateX(100%);
  }
}

语法 2

@keyframes identifier {
  0% { top: 0; }
  50% { top: 30px; left: 20px; }
  50% { top: 10px; }
  100% { top: 0; }
}

小飞机(动画)

小飞机 (jsbin.com)