0%

CSS动画

CSS动画的分类

  • transition补间,过度动画:控制最开始的状态和最末的状态的动画,中间的状态由浏览器自动帮我们计算生成
  • keyframe关键帧动画
  • 逐帧动画

transition补间动画

  • transition-property:规定设置过渡效果的 CSS 属性的名称。只有指定的属性才会在过渡中发生动画,其它属性仍如通常那样瞬间变化。
  • transition-duration:指定过渡的时长。或者为所有属性指定一个值,或者指定多个值,为每个属性指定不同的时长。
  • transition-timing-function:规定速度效果的速度曲线。
  • transition-delay:指定延迟,即属性开始变化时与过渡开始发生时之间的时长。

补间动画场景

  • 位置-平移(left,right,margin,transform)
  • 方位-旋转(transform: rotate)
  • 大小-缩放(transform: scale)
  • 透明度(opacity)
  • 其他-线性变换(transform)

补间动画过度动画

ceaser:过度动画

keyframe关键帧动画

@keyframes 规则通过在动画序列中定义关键帧(或waypoints)的样式来控制CSS动画序列中的中间步骤。这比 transition 更能控制动画序列的中间步骤。

要使用关键帧, 先创建一个带名称的 @keyframes 规则,以便后续使用 animation-name 这个属性来将一个动画同其关键帧声明匹配。每个 @keyframes 规则包含多个关键帧,也就是一段样式块语句,每个关键帧有一个百分比值作为名称,代表在动画进行中,在哪个阶段触发这个帧所包含的样式。

逐帧动画

  • 每一帧都是关键帧,没有补间,过度
  • 适用于无法补间计算的动画
  • 资源较大,需要大量图片
  • 使用 animation-timing-function: steps(1),1保证每个区间只有一个画面,取消补间,过度效果。

过度动画与关键帧动画的区别

  • 过度动画需要有状态改变
  • 关键帧动画不需要状态改变
  • 关键帧动画能控制更精细

逐帧动画如何实现

  • 使用关键帧动画
  • 消除补间,过度(steps)

CSS动画性能

  • 性能不差
  • 部分情况下优于js
  • js可以做到更好,可以优化
  • 部分高危属性,如:box-shadow等

参考

-------------本文结束感谢您的阅读-------------