Page 340 - AngularJS权威教程
P. 340

320  第 22 章  Angular 动画


                                 ele.bind('click', function() {
                                     $animate.addClass(ele, 'greenlight');
                                 });
                             }
                         }
                 });
                 调用addClass()方法会经过如下步骤:

                 (1) 运行所有在元素上用JavaScript定义的动画;
                 (2) [className]-add类被添加到元素上;

                 (3) $animate检查CSS样式来寻找过渡/动画的持续时间和延迟属性;
                 (4) [className]-add-active类被添加到元素的classList中(触发CSS动画);

                 (5) $animate用定义过的持续时间等待完成;
                 (6) 动画结束, $animate移除两个添加的类: [className]-add和[className]-add-active;

                 (7) className类被添加到元素上;

                 (8) 触发done()回调函数(如果定义了的话)。

             22.10.2  removeClass()

                 removeClass()方法触发了一个基于className的自定义动画事件,并且移除在className
             值中定义的CSS类。当从DOM元素上移除一个类的时候,$animate服务给这个className添加了
             一个叫-remove的后缀来让我们建立动画。


                         如果没有CSS过渡,在CSS选择器([className]-remove)上也没有定义关键
                        帧动画,ngAnimate就不会触发这个动画,只是会把这个样式类加上。

                 removeClass()方法带三个参数。
                  element(jQuery/jqLite元素)

                 正在建立动画的元素。
                  className(字符串)

                 正在建立动画,并且从元素上移除的CSS类。

                  done(函数)
                 当动画完成时调用的回调函数。

                 angular.module('myApp', ['ngAnimate'])
                     .directive('myDirective', function($animate) {
                         return {
                             template: '<div class="myDirective"></div>',
                             link: function(scope, ele, attrs) {
                                 ele.bind('click', function() {
                                     $animate.addClass(ele, 'greenlight');
                                 });
   335   336   337   338   339   340   341   342   343   344   345