CSS3-动画animation

172 阅读2分钟

一、动画animation

概念:实现多个状态间的变化过程,动画过程可控(重复播放、最终动画、是否暂停)

1. 动画的本质是快速切换大量图片时在人脑中形成具有连续性的画面。
2. 构成动画的最小单位:帧或动画帧

动画分为两种模式:

  1. 补间动画: 动画执行过程中, 没有间隔, 非常平滑, 默认使用速度曲线ease
  2. 逐帧动画: 一步一步去执行的动画, 中间会有间隔停顿, 使用的速度曲线: steps(正整数); 逐帧动画又叫精灵动画, 常常配合精灵图去使用

语法: animation:name duration timing-function delay iteration-count direction fill-mode;

animation: 动画名称 动画时长 速度曲线 延迟时间 重复次数 动画方向 执行完毕时状态

实现步骤:

  1. 定义动画
方法一:
@keyframes 动画名称 {
    from {}
    to {}
}

方法二:
@keyframes 动画名称 {
    0% {}
    25% {}
    50% {}
    100% {}
}
  1. 调用动画 animation: 动画名称 动画时长

注意:

  • 动画名称和动画时长必须赋值
  • 取值不分先后顺序
  • 如有两个时间值,则第一个表示动画时长,第二个表示延迟时间
  • forwards不能和infinite结合使用,否则不生效
  • 调用多个动画时, 动画与动画之间用逗号隔开

steps动画帧:

取值:

  • number: 帧数(正整数)
  • end: 保留当前帧状态,直到这段动画时间结束
  • start: 保留下一帧状状态,直到这段动画事假结束
  • 应用: 打字效果、钟表效果(transform: rotate(); transform-origin: 0 centeer;)、跑马效果

二、动画相关属性表格

属性 取值 作用
animation-name 自定义名称(关键词不行) 动画对象名称
animation-duration s/ms 设置对象动画的持续时间
animation-timing-function ease 平滑过渡
linear 线性过渡
ease-in 由慢到快
ease-out 由快到慢
ease-in-out 由慢到快再到慢
step-start 等同于 steps(1, start)
step-end 等同于 steps(1, end)
steps(?, ?) 接受两个参数的步进函数。第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。
animation-delay s/ms 设置动画的延迟时间
animation-iteration-count infinite 无限循环
number 指定对象动画的具体循环次数
animation-direction normal 正常方法(默认)
reverse 反方向运动
alternate 动画先正常运行再反向运行,并持续交替运行
alternate-reverse 动画先反向运行再正方向运行,并持续交替运行
animation-fill-mode backwards(默认值) 设置对象状态为动画开始时的状态
forwards 设置对象状态为动画结束时的状态
animation-play-state pasued 暂停,通常配合:hover使用