CSS 动画

transition 过渡是通过初始和结束两个状态之间的平滑过渡实现简单动画的;               // animate.css 动画库?!

animation 则是通过设置多个节点(关键帧@keyframes)来精确控制一个或一组动画,来实现更为复杂的动画效果。


[ 实现方式 ] animation 制作动画效果需要两步,首先用 关键帧@keyframes声明动画,再用 animation属性调用动画。

// 代码示例 - 子属性写法

// 代码示例 - 简写属性写法


定义动画 — 关键帧

  • 关键帧的语法是以@keyframes开头,后面紧跟着动画名称animation-name。                 // animation API?↓
  • from等同于0%,to等同于100%。
  • 百分比跟随的花括号里面的代码,代表此时对应的样式。

调用动画 — 动画属性

[ 动画名称 ] animation-name: none | <single-animation-name> [, <single-animation-name> ]*

  • 如果多个动画试图修改相同的属性,那么动画列表的后面覆盖前面
  • 如果动画的其他7个子属性和动画名称的长度不同,动画名称列表的长度决定最终的长度。

多余的值无效,缺少的值按照顺序进行重复


[ 持续时间 ] animation-duration: <time> [, <time>]*

  • 0s(初始值)意味着动画没有时间,持续时间不能为负值。


[ 运动曲线 ] animation-timing-function: <single-timing-function> [, <single-timing-function>]*

  • 类似于transition的时间函数,可以应用于整个动画中,也可以应用于关键帧的某两个百分比之间。


[ 延迟时间 ] animation-delay: <single-animation-delay>[,<single-animation-delay> ]*


[ 循环次数 ] animation-iteration-count: infinite | <number>[,infinite | <number>]*

  • 默认为1,可以是整数,也可以小数,但不能是0和负数;
  • 如果为infinite则表示无限次动画;

[ 动画方向 ] animation-direction: <single-animation-direction>[,<single-animation-direction> ]*


[ 动画状态 ] animation-play-state:running | paused[,running | paused]*

  • running:(初始值)表示播放中;
  • paused:表示动画暂停;

[ 填充模式 ] animation-fill-mode: <single-animation-fill-mode>[,<single-animation-fill-mode> ]*