使用ngAnimate淡入ngRepeat中的每个项目时,当前所有项目同时淡入。每个项目是否有可能在上一个项目淡出到例如淡入之后淡入50%导致级联效应?
<ul>
<li ng-repeat="phone in phones" ng-animate="{enter: 'phone-fade-enter'}">
<img src="{{phone.img}}"> {{phone.name}}
</li>
</ul>
使用ngAnimate,如果可以延迟每个项目的动画,那将是很好的,例如像这样:
<li ng-repeat="phone in phones" ng-animate="{enter: 'phone-enter', delay: 500}">
有没有办法解决这个问题?
谢谢!
答案 0 :(得分:27)
现在支持1.2:https://docs.angularjs.org/api/ngAnimate#css-staggering-animations
要使用它,请使用CSS中的ng-enter-stagger
选择器,如下所示:
<强>的CSS:强>
.animated.ng-enter-stagger {
transition-delay: 0.3s;
animation-delay: 0.3s;
}
sass(如果正在使用):
=stagger($delay)
&-stagger
transition-delay: $delay
animation-delay: $delay
.animated
&.ng-enter
+stagger(0.3s)
答案 1 :(得分:14)
您可以通过在重复元素上设置转换延迟样式来获得此效果。 (需要v1.1.5)
<li ng-repeat="phone in phones" ng-animate="{enter: 'phone-enter'}" style="transition-delay: {{$index * 500}}ms">
您必须在CSS中单独设置过渡属性,否则内联样式将覆盖整个过渡:
.phone-enter {
opacity:0;
-webkit-transition-property: all;
-webkit-transition-timing-function: ease-out-cubic;
-webkit-transition-duration: 400ms;
}
.phone-enter.phone-enter-active {
opacity: 1;
}
这是由heyotwell创建的fork of the example。