Page 239 - css揭秘
P. 239

量,把整个动画切分为多帧,而且整个动画会在帧与帧之间硬切,不会做任
                                              何插值处理。通常,这种硬切效果是我们极力避免的,因此我们很少听到关
                                              于 steps() 的讨论。在 CSS 调速函数的世界里,基于贝塞尔曲线的调速函
                                              数就像是处处受人追捧的白天鹅,而 steps() 则是旁人避之唯恐不及的丑小
                                              鸭。不过,在这个案例中,后者却是我们通向成功的关键。一旦把整个动画
                                              的代码修改为下面的形式,这个加载提示就瞬间变成我们想要的样子了:

                                                  animation: loader 1s infinite steps(8);

                                                  别忘了 steps() 还接受可选的第二个参数,其值可以是 start 或 end
                                             (默认值)。这个参数用于指定动画在每个循环周期的什么位置发生帧的切换
                                              动作(关于默认值 end 的行为,参见图 8-17),但实际上这个参数用得并不
                                              多。如果我们只需要一个单步切换效果,还可以使用 step-start 和 step-
                                              end 这样的简写属性,它们分别等同于 steps(1, start) 和 steps(1, end)。

                                               试一试 play.csssecrets.io/frame-by-frame


                                                    向 Simurai(http://simurai.com/)脱帽致敬,感谢他在“用 steps()
                                                实现拼合图片的动画效果”(http://simurai.com/blog/2012/12/03/step-animation)
                                                这篇文章中提出了这个实用的技巧。
                                  致 敬


                                                   „ CSS 动画
                                                  http://w3.org/TR/css-animations                  相关规范



































                  208   第 8 章 过渡与动画







          ඀ࠡ  JOEC
   234   235   236   237   238   239   240   241   242   243   244