动画的原理

浏览器的渲染过程

  • 依据HTML构建HTML树 (DOM)
  • 依据CSS构建CSS树(CSSOM)
  • 将两棵树合并成一颗渲染树 (render tree)
  • Layout布局 (文档流、盒模型、计算大小和地位)
  • Paint绘制(把边框色彩、文字色彩、暗影等画进去)
  • Compose合成(依据层叠关系展现画面)

浏览器的渲染原理的三种更新形式

  • JS/CSS>款式>布局>绘制>合成

    备注:布局能够简略了解为地位和大小,如果CSS中有对布局相干的内容进行改变,那么浏览器渲染时,会从新走布局>绘制>合成的路线
    官网答复:如果您批改元素的“layout”属性,也就是扭转了元素的几何属性(例如宽度、高度、左侧或顶部地位等),那么浏览器将必须查看所有其余元素,而后“主动重排”页面。任何受影响的局部都须要从新绘制,而且最终绘制的元素需进行合成。
  • JS/CSS>款式>绘制>合成

    备注:这个能够了解为在对CSS进行相干改变时,如果没有对地位和大小进行到改变,则浏览器进行渲染时会跳过布局这个流程,退出你只批改了背景色彩,那么渲染时就走绘制>合成的路线
    官网答复:如果您批改“paint only”属性(例如背景图片、文字色彩或暗影等),即不会影响页面布局的属性,则浏览器会跳过布局,但仍将执行绘制。
  • JS/CSS>款式>合成

CSS动画优化

  • JS优化
    应用requestAnimationFrame代替setTimeout或setInterval
  • CSS优化
    应用will-change或transform

transform四个罕用性能

  • translate 位移
  • scale 缩放
  • rotate 旋转
  • skew 歪斜
    具体用法可查看MDN文档

transition的用法
作用:补充两头帧
语法:transition:属性名 时长 过渡形式 提早
过渡形式:

  • linear
  • ease
  • ease-in
  • ease-out
  • ease-in-out
  • cubic-bezier
  • step-start
  • step-end
  • steps

animation的用法
作用:申明关键帧,增加动画
申明关键帧:

  • 语法:@keyframs 动画名{}
  • 规范写法 如下
@keyframes 动画名 {  from {    transform: translateX(50%);  }  to {    transform: translateX(100%);  }}
@keyframes 动画名 {  0% { top: 0; left: 0; }  30% { top: 30px; }  68%, 72% { left: 30px; }  100% { top: 60px; left: 100%; }}

语法:animation:时长|过渡形式|提早|次数|方向|填充模式|是否暂停
|动画名
具体查看MDN文档