您可以通过设置
max-height属性动画来实现。查看此示例:
http://jsfiddle.net/k4sR3/8/
您需要为选择一个足够高的值
max-height(在我的示例中,我使用90px)。最初添加项目时,您希望它以0高度开始(我也
left希望将项目从左侧滑入
opacity,但如果它们不符合以下条件,则可以将其删除:你在做):
.repeated-item.ng-enter { -webkit-transition:0.5s linear all; -moz-transition:0.5s linear all; -o-transition:0.5s linear all; transition:0.5s linear all; max-height: 0; opacity: 0; left: -50px;}然后,在
ng-enter-active规则中为这些属性设置最终值:
.repeated-item.ng-enter.ng-enter-active { max-height: 90px; opacity: 1; left: 0;}删除项目有些棘手,因为您将需要使用基于关键帧的动画。再次,您希望设置动画
max-height,但是这次您要从90px开始并将其减小到0。随着动画的运行,该项目将缩小,而以下所有项目将平滑向上滑动。
首先,定义将要使用的动画:
@keyframes my_animation { from { max-height: 90px; opacity: 1; left: 0; } to { max-height: 0; opacity: 0; left: -50px; }}(为简便起见,我在这里省略了供应商特定的定义,
@-webkit-keyframes,
@-moz-keyframes等-看看上面的全样本的jsfiddle。)
然后,声明您将使用此动画,
ng-leave如下所示:
.repeated-item.ng-leave { -webkit-animation:0.5s my_animation; -moz-animation:0.5s my_animation; -o-animation:0.5s my_animation; animation:0.5s my_animation;}基本
如果任何人都在努力弄清楚如何使AngularJS动画完全正常工作,这是一个简短的指南。
首先,使动画支持,你将需要包括一个附加文件
angular-animate.js, 之后 您加载
angular.js。例如:
<script type="text/javascript" src="angular-1.2/angular.js"></script><script type="text/javascript" src="angular-1.2/angular-animate.js"></script>
接下来,您需要
ngAnimate通过将其添加到模块的依赖项列表中进行加载(在第二个参数中):
var myApp = angular.module('myApp', ['ngAnimate']);然后,为您的
ng-repeat项目分配一个类。您将使用此类的名称来分配动画。在我的示例中,我用作
repeated-item名称:
<li ng-repeat="item in items" >
然后,使用
repeated-item类以及特殊类
ng-enter,在CSS中定义动画
ng-leave,并
ng-move在添加,删除或移动项目时将Angular添加到项目中。
AngularJS动画的官方文档在这里:
http://docs.angularjs.org/guide/animations



