CSS动画实现笔记

116 阅读1分钟

浏览器渲染过程

  1. 根据HTML构建HTML树(DOM)
  2. 根据CSS构建CSS树(CSSOM)
  3. 将两棵树合并成一棵渲染树(render tree)
  4. Layout布局(文档流、盒模型、计算大小和位置)
  5. Paint绘制(边框颜色、文字颜色、阴影等)
  6. Compose合成(根据层叠关系展示画面)

三棵树图示

三棵树.png

三种更新方式

更新.png

  1. div.remove会触发当前消失,其他元素relayout;
  2. 改变背景颜色,跳过layout;
  3. 改变transform,只需Compose合成。

CSS动画优化

  • JS优化 使用requestAnimationFrame代替setTimeout或setlnterval
  • CSS优化 使用will-change或translate

transform

四个常用功能

  • trabslate 位移
  • scale 缩放
  • rotate 旋转
  • skew 倾斜 注意:一般都需要配合transition过渡 inline元素不支持transform

transition过渡

作用:补充中间帧

语法:

  • transition:属性名 时长 过渡方式 延迟
  • transition:left 200ms linear(可用all代表所有属性)
  • 过渡方式:linear/ease/ease-in/ease-out等 注意:并不是所有属性都能过渡 例如display:none-block

animation用法

缩写语法:

  • animation:时长 过渡方式 延迟 次数 方向 填充模式 是否暂停 动画名
  • 时长:如1s
  • 过渡方式:与transition一样
  • 次数:X或infinite
  • 方向:reverse/alternate/alternate-reverse
  • 填充模式:none/forwards/backwards/both
  • 是否暂停:paused/running

@keyframes 生命中间帧

  • 一种是from to
  • 一种是百分数

1.png

2.png