Animations in action

    给元素添加 animation 跟添加 transition类似。不过它还需要 keyframes

    单独定义 的好处是我们可以复用这些动画。

    我们通过 animation 属性可以将编写的 keyframes 应用到元素上。animationtransition 很类似,不过多了一些其他的选项。下面是 animation 的简写方式:

    分开写就是下面这样:

    需要指定一个目标属性,例如 “background” 或 “all”,animation 则需要带 keyframes 的名字来描述动画。

    animation 拥有一些 transition 没有的属性。例如,我们可以告诉动画来回交替循环,而不是每次从头开始循环。

    keyframes 是用来描述动画过程中一系列变化的。

    Animations in action - 图1

    怎样描述这种变化呢?我们可以说“开始时蓝色,到一半时变成橙色,最后变成绿色”

    如果再精确一点描述,我们可以用百分比来描述:

    “0%的时候蓝色背景,50%的时候橙色,100%的时候绿色”

    我们可以概括为:

    这样子我们就创建了动画整个过程中包含的“路径点”(waypoint)。 现在要做的就是将这些百分比按照 keyframes 的规则去写并命名。 结果如下:

    这个动画名字叫 “change-background”。稍后我们会用到它。

    结合下面的例子,我们可以看出,上面的百分比指的是在动画过程中,其对应的 keyframe 发生的“时间点”。还可以知道,我们只要告诉浏览器开始、中间和结束时的颜色就可以了,在这些状态之间变化时,浏览器会自动去计算颜色值的插值。

    前面提到过,使用 animation-direction 可以让动画来回交替变化,看下面的例子,直观地感受下:

    代码放到CodePen上了。 animation-direction 属性已经更改为 alternate

    虽然我写的代码里没有加 -webkit- 等前缀,但如果要在实际工程里应用 animation,还是要添加对应的浏览器前缀。

    在 CodePen 中,你可以使用 CSS 设置中的 “Autoprefixer” 选项。对于本地开发,我使用 Gulp 版本的 Autoprefixer。 也是一个不错的选择。

    Open up this keyframes example and try changing the code. See if you can break it, and fix it. Even better, if you come up with something cool, let me know!

    I love seeing how you’re getting on. You can or get in touch on Twitter.