Page 334 - AngularJS权威教程
P. 334

314  第 22 章  Angular 动画


                     animation: 2s animateNgIf-enter;
                 }
                 .animateNgIf.ng-leave {
                     -webkit-animation: 2s animateNgIf-leave;
                     animation: 2s animateNgIf-leave;
                 }
                 3. JavaScript动画

                 当用JavaScript做动画时,需要在动画的描述对象上定义enter和leave属性。

                 angular.module('myApp', ['ngAnimate'])
                     .animation('.animateNgIf', function() {
                         return {
                             enter: function(element, done) {
                                 // 显示如何用jQuery实现动画的例子
                                 // 注意,这需要在HTML中包含jQuery
                                 $(element).css({
                                     opacity: 0
                                 });
                                 $(element).animate({
                                     opacity: 1
                                 }, done);
                             },
                             leave: function(element, done) {
                                 done();
                             }
                         }
                 });

             22.9.6  ngClass动画

                 当视图中的样式类发生变化时,是可以基于行为去产生动画的。当一个CSS类变更时(比如
             在ngShow和ngHide指令中), $animate会通知和触发动画,不管是增加了新类,还是移除了旧类。

                 不同于使用进入动画的命名约定,我们为ngClass使用一个新的CSS约定,依次为新类加后
             缀,变为[CLASSNAME]-add和[CLASSNAME]-remove。
                 类似于上面的进入事件,ngAnimate会在合适的时间为具体的事件添加[CLASSNAME]-add-
             active和[CLASSNAME]-remove-active。

                 当我们在这些样式类上做动画时,动画先触发,然后最终的类在动画结束时才被添加。当一
             个类被移除时,它直到动画结束之前都还在元素上。
                 ngClass指令触发这些事件:

                               动  作                                     事件名称
                    ngClass求值为真之后,类被添加之前                                 add
                    类被移除之前触发                                             remove

                 对于后面的ngClass示例,我们用这段HTML来运行:

                 <div ng-init="grow=false"
                     ng-controller="HomeController">
                     <button ng-click="grow=!grow">Grow</button>
                     <div ng-class="{grown:grow}"
   329   330   331   332   333   334   335   336   337   338   339