Page 323 - AngularJS权威教程
P. 323

22.7  微调动画    303


                  所有的主流浏览器都支持JavaScript动画,所以如果想在不支持CSS渐变和动画的浏览器上提                                    19
              供动画的话,这是个好的选择。
                  这里,我们更新JavaScript来处理动画,而不是操控CSS来让元素动起来。                                            20

                  ngAnimate在模块API上添加了.animation方法;这个方法提供了一个接口,我们可以用来
              创建动画。                                                                                  21
                  animiation()方法带有两个参数。
                   classname(字符串)                                                                   22

                  这个classname会匹配要产生动画的元素的class。到现在为止的例子里,这个动画应当被
              命名为:.fade-in。                                                                          23
                   animateFun(函数)
                                                                                                     24
                  animate函数预期会返回一个对象,包含了指令会触发的不同事件函数(当使用的时候)。
                  想知道这些函数的详细文档,请查阅$animate API文档。
                                                                                                     25
                  angular.module('myApp', ['ngAnimate'])
                      .animation('.fade-in', function() {
                           return {                                                                  26
                               enter: function(element, done) {
                                   // 运行动画
                                   // 当动画结束的时候调用done                                                 27
                                   return function(cancelled) {
                                       // 关闭或者取消的回调
                                   }
                             }                                                                       28
                           }
                  });
                                                                                                     29
                  $animate服务为指定的元素调用这些函数。在这些函数里,我们可以对这个元素做任何事情。
              唯一要求是在动画结束时,需要调用回调函数done()。
                                                                                                     30
                  在这些函数中,我们可以返回一个end函数,它会在动画结束或者动画被取消时调用。
                  当动画触发时, $animate为事件查找匹配的动画函数。如果找到了匹配事件的函数,它会执
              行这个函数,否则就会完全跳过这个动画。                                                                    31


              22.7 微调动画                                                                              32


                  取决于应用的复杂度,ngAnimate和它下面的动画代码可能会需要一些调整。                                             33

              对CSS类作过滤                                                                               34

                  默认情况下,ngAnimate会自动尝试让每个通过$animate服务传递过来的元素都动起来。但
              是不必担心,只有包含了用CSS或者JavaScript动画注册了的CSS类的元素才会真的动起来。                                       35

                  尽管这个系统在运作时,必须检查每个可能的CSS类,这可能会在低速设备上慢一些。因此,
              在angular.js的1.2.13发布版本中,ngAnimate提供了一个配置项。让$animate提供者可以使用正                            36
   318   319   320   321   322   323   324   325   326   327   328