博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular-动画。
阅读量:5036 次
发布时间:2019-06-12

本文共 2819 字,大约阅读时间需要 9 分钟。

ngAnimate插件是做什么的?

ngAnimate插件如其名字一样是为元素提供动画的。

怎么定义动画?

第一步必须是引入插件

 

第二步让app引入(依赖)这个插件

 
var appH5=angular.module("app",['ngAnimate']);appH5.controller("myTabCtrl",['$scope',function($scope){         $scope.isShow=true;}])
我是要动画的元素
添加动画的第一种方式:通过css3.0的方式样式定义示例.new-item{ padding: 10px; border-bottom: 1px solid #ededed; font-size: 1.5rem; position: relative; transition:all 0.5s;}/*元素进入页面初始状态*/.new-item.ng-enter{ top: 10px;}/*进入页面动画后的最终状态*/.new-item.ng-enter-active{ top: 0px;}/*元素移出页面初始状态*/.new-item.ng-leave{ opacity:1;}/*移出页面动画后的最终状态*/.new-item.ng-leave-active{ opacity:0;}//html
我是要动画的元素
 

 

 
  • 为什么添加样式就可以产生动画?
    当元素进入页面时,angular会给元素依次添加上class ng-enter 和 ng-enter-active,相信大家都知道,CSS3.0在一个元素定义了 transition 之后,两个相同属性的属性值改变就会用过渡动画来实现属性值的改变。当元素移除页面时也是同理,所以我们只要定义元素的四个class来定义这四个时间点的状态,其他的就交给angular来做就好了。
  • 支持这种方式定义动画的指令有哪些?
    ng-if、ng-view、ng-repeat、ng-include、ng-switch
    这几个指令是通过新建节点和移除节点来实现元素的显示和隐藏的
  • ng-repeat 的不同之处
    .new-item{  padding: 10px;  border-bottom: 1px solid #ededed;  font-size: 1.5rem;  position: relative;  transition:all 0.5s;}.new-item.ng-enter{  top: 10px;}.new-item.ng-enter-active{  top: 0px;}.new-item.ng-enter-stagger{/*ng-repeat提供了这个样式,来实现每一个item条目的依次执行某个动画 */  animation-delay:100ms;  -webkit-animation-delay:100ms; }.new-item.ng-leave{  opacity:1;}.new-item.ng-leave-active{  opacity:1;}.new-item.ng-leave-stagger{  animation-delay:100ms;  -webkit-animation-delay:100ms; }//html
    {
    {new.title}}

     

刚才说通过新建和删除元素来实现的指令是可以进行动画的,那么只是更改样式显示或者隐藏元素的指令(ng-show ng-hide ng-class )能不能进行动画呢?

 

  
/*元素隐藏初始状态*/.new-item.ng-hide-add{    opacity:1;}/*隐藏操作动画后的最终状态*/.new-item.ng-hide-add-active{    opacity:0;}/*元素显示初始状态*/.new-item.ng-hide-remove{    top: 10px;}/*显示操作动画后的最终状态*/.new-item.ng-hide-remove-active{    top: 0px;}

 

 

添加动画的第二种方式:通过js的方式

//ng-if、ng-view、ng-repeat、ng-include、ng-switch 指令appH5.animation(".new-item",function(){    return {        leave:function(element,done){            //第一个参数是运动的元素,第二个参数是动画完成后的回调,必须调用的,不调用则指令功能不会执行            $(element).animate({width:0,height:0},1000,done);//借助jQuery        },        enter:function(element,done){            $(element).css({width:100,height:100});//借助jQuery            $(element).animate({width:100,height:100},1000,done)//借助jQuery        }    }});//ng-show ng-hide ng-class 指令appH5.animation(".new-item",function(){    return {        addClass:function(element,sClass,done){            //第一个参数是运动的元素            //第二个参数是元素的样式-->一般用不上            //第三个参数是动画完成后的回调,必须调用的,不调用则指令功能不会执行            $(element).animate({width:0,height:0},1000,done)        },        removeClass:function(element,sClass,done){            $(element).css({width:100,height:100});            $(element).animate({width:100,height:100},1000,done)        }    }});

 

 

转载于:https://www.cnblogs.com/qiaocanpeng/p/7097140.html

你可能感兴趣的文章
Python 拓展之推导式
查看>>
[Leetcode] DP-- 474. Ones and Zeroes
查看>>
80X86寄存器详解<转载>
查看>>
c# aop讲解
查看>>
iterable与iterator
查看>>
返回顶部(动画)
查看>>
webpack+react+antd 单页面应用实例
查看>>
Confluence 6 SQL Server 数据库驱动修改
查看>>
Confluence 6 通过 SSL 或 HTTPS 运行 - 备注和问题解决
查看>>
【47.76%】【Round #380B】Spotlights
查看>>
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>
爬取:中国大学排名
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>