码迷,mamicode.com
首页 > 其他好文 > 详细

ng animate

时间:2015-12-03 13:47:28      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:

要在angular中加入动画必须引入angular.animate.js插件,然后就可以在module中引入ngAnimate模块。如:

var module1 = angular.module(‘myApp‘,[‘ngAnimate‘]);

指令对动画支持情况如下

Directive    Supported Animations
ngRepeat    enter, leave and move
ngView    enter and leave
ngInclude    enter and leave
ngSwitch    enter and leave
ngIf    enter and leave
ngClass    add and remove
ngShow & ngHide    add and remove (the ng-hide class value)
form    add and remove (dirty, pristine, valid, invalid & all other validations)
ngModel    add and remove (dirty, pristine, valid, invalid & all other validations)

怎么用呢?举例:

ng-repeat 主要是对一个list的展示,这些元素是是被创建出来加入到DOM结构中去的,那么,它的动画过程为:

创建元素 -> .ng-enter -> .ng-enter-active -> 完成,呈默认状态
默认状态 -> .ng-leave -> .ng-leave-active -> 销毁元素

给ng-repaet创建的元素都添加一个类名,--例如item
然后就可以通过设置.ng-enter(.ng-leave) 和 .ng-enter-active(.ng-leave-active) 的样式,加上css3的动画来显示出动画,如:
.item{
  -webkit-transition: all linear 1s;
  -o-transition: all linear 1s;
  transition: all linear 1s;
}
/*动画开始前*/
.item.ng-enter{
  opacity:0;
}
/*动画过程*/
.item-ng-enter-active{
  opacity:1;
}

这样的效果是对所有元素同时应用,可能实际运用中需要有一个先后的渐变出现的效果,这时候可以设置ng-enter-stagger来实现.

/*不同时出现*/
.item.ng-enter-stagger {
    transition-delay:0.5s;
    transition-duration:0;
}

如果这些依然不能满足,还可以使用js

m1.animation(‘.item‘,function(){
    return {
        addClass : function(element,sClass,done){
            //console.log(element);
            //console.log(sClass);
            //console.log(done);
            $(element).animate({width:0,height:0},1000,done);
        },
        removeClass : function(element,sClass,done){
            $(element).css({width:0,height:0});
            $(element).animate({width:200,height:200},1000,done);
        }
    };
});

 

ng animate

标签:

原文地址:http://www.cnblogs.com/toodeep/p/5015471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!