Page 336 - AngularJS权威教程
P. 336

316  第 22 章  Angular 动画


                 3. JavaScript动画
                 当用JavaScript做动画时,需要在动画的描述对象上定义addClass和removeClass属性。

                 angular.module('myApp', ['ngAnimate'])
                     .animation('.animateMe', function() {
                         return {
                             addClass: function(ele, clsName, done)
                             {
                                 // 显示如何用jQuery实现动画的例子
                                 // 注意, 这需要在HTML中包含jQuery
                                 if (clsName === 'grown') {
                                     $(ele).animate({
                                         'font-size': '50px'
                                     }, 2000, done);
                                 } else { done(); }
                             },
                             removeClass: function(ele, clsName, done)
                             {
                                 if (clsName === 'grown') {
                                     $(ele).animate({
                                         'font-size': '16'
                                     }, 2000, done);
                                 } else { done(); }
                             }
                         }
                 });

             22.9.7  ngShow/ngHide动画

                 ngShow和ngHide指令在显示或者隐藏元素时,使用了.ng-hide类。可以在显示和隐藏DOM
             元素之间的这段时间添加动画。

                 当在这些样式类上做动画时,动画会先触发,它完成时,最终的.ng-hide才会被加到DOM
             元素上。

                 因为当移除ng-hide类时,ng-hide指令还在DOM元素上,所以在它完成之前,我们是看不
             到动画的。因此,需要告诉CSS把我们的样式类显示出来,不要折叠。

                 ngShow和ngHide指令触发这些事件:
                               动  作                                     事件名称
                    ngClass求值为真之后,类被添加之前                                 add
                    类被移除之后                                               remove

                 对后面的ngHide例子,我们使用下面这个HTML来运行:

                 <div ng-init="show=false"
                     ng-controller="HomeController">
                     <button ng-click="show=!show">Show</button>
                     <div ng-show="show" class="animateMe">
                         <h2>Show me</h2>
                     </div>
                 </div>
   331   332   333   334   335   336   337   338   339   340   341