CSS3 animation 属性

animation基本用法是:

  • animation-name

animation-name 属性指定应用的一系列动画,每个名称代表一个由@keyframes定义的动画序列。

  • animation-duration

animation-duration属性指定一个动画周期的时长。

默认值为 0s,表示无动画。

  • animation-timing-function

animation-timing-function 属性定义 CSS 动画在每一动画周期中执行的节奏。可能值为一或多个。

对于关键帧动画来说,timing function 作用于一个关键帧周期而非整个动画周期,即从关键帧开始开始,到关键帧结束结束。

关于step的理解,请参考下图:

W3C官网上对steps()函数的剖析图:

横轴表示时间,纵轴表示动画完成度(也就是0%~100%)。

第一个图,steps(1, start)将动画分为1段,跳跃点为start,也就是说动画在每个周期的起点发生阶跃(即图中的空心圆 → 实心圆)。由于只有一段,后续就不再发生动画了。

第二个图,steps(1, end)同样是将动画分为1段,但跳跃点是end,也就是动画在每个周期的终点发生阶跃,也是图中的空心圆 → 实心圆,但注意时间,是在终点才发生动画。

第三个图,steps(3, start)将动画分为三段,跳跃点为start,动画在每个周期的起点发生阶跃(即图中的空心圆 → 实心圆)。在这里,由于动画的第一次阶跃是在第一阶段的起点处(0s),所以我们看到的动画的初始状态其实已经是 1/3 的状态,因此我们看到的动画的过程为 1/3 → 2/3 → 1 。

第四个图,steps(3, end)也是将动画分为三段,但跳跃点为end,动画在每个周期的终点发生阶跃(即图中的空心圆 → 实心圆)。虽然动画的状态最终会到达100%,但是动画已经结束,所以100%的状态是看不到的,因此我们最终看到的动画的过程是0 → 1/3 → 2/3。

先定义一个动画:

然后设置两个正方形,再设置动画参数:

从上面可以看到,设置了step-start的正方形的颜色变化是蓝色与红色相互切换(跳过了紫色,因为阶跃点是start,也就是0s时已经是50%的状态了,因此直接显示蓝色);而设置了step-end的正方形的颜色变化是紫色与蓝色相互切换(阶跃点是end,最后没有到红色)。

  • animation-delay

animation-delay CSS属性定义动画于何时开始,即从动画应用在元素上到动画开始的这段时间的长度。

0s是该属性的默认值,代表动画在应用到元素上后立即开始执行。否则,该属性的值代表动画样式应用到元素上后到开始执行前的时间长度;

定义一个负值会让动画立即开始。但是动画会从它的动画序列中某位置开始。例如,如果设定值为 -1s,动画会从它的动画序列的第 1 秒位置处立即开始。

  • animation-iteration-count

animation-iteration-count CSS 属性 定义动画在结束前运行的次数 可以是 1 次 无限循环。

如果指定了多个值,每次播放动画时,将使用列表中的下一个值,在使用最后一个值后循环回第一个值。

动画播放的次数;默认值为1。可以用小数定义循环,来播放动画周期的一部分:例如,0.5 将播放到动画周期的一半。不可为负值。

  • animation-direction

animation-direction CSS 属性指示动画是否反向播放,它通常在简写属性animation中设定。

  • animation-fill-mode

animation-fill-mode 设置 CSS 动画在执行之前和之后如何将样式应用于其目标。

  • animation-play-state

animation-play-state CSS 属性定义一个动画是否运行或者暂停。可以通过查询它来确定动画是否正在运行。另外,它的值可以被设置为暂停和恢复的动画的重放。

恢复一个已暂停的动画,将从它开始暂停的时候,而不是从动画序列的起点开始在动画。

初始值:running

669