How to delay ngAnimate in ngRepeat

前端 未结 2 967
滥情空心
滥情空心 2021-01-30 23:31

When using ngAnimate to fade in each item in ngRepeat, currently all items fade in at the same time. Is it possible for each item to fade in after the previous item has faded to

相关标签:
2条回答
  • 2021-01-30 23:50

    You can get this effect by setting the transition-delay style on the repeated element. (Requires v1.1.5)

    <li ng-repeat="phone in phones" ng-animate="{enter: 'phone-enter'}" style="transition-delay: {{$index * 500}}ms">
    

    You'll have to set your transition properties separately in your CSS, otherwise the inline style will overwrite the entire transition:

    .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;
    }
    

    Here is a fork of the example created by heyotwell.

    0 讨论(0)
  • 2021-01-31 00:09

    This is now supported natively with 1.2: https://docs.angularjs.org/api/ngAnimate#css-staggering-animations

    To make use of it, use the ng-enter-stagger selector in your CSS, like so:

    css:

    .animated.ng-enter-stagger {
      transition-delay: 0.3s;
      animation-delay: 0.3s;
    }
    

    sass (if in use):

    =stagger($delay)
      &-stagger
        transition-delay: $delay
        animation-delay: $delay
    
    .animated
      &.ng-enter
        +stagger(0.3s)
    
    0 讨论(0)
提交回复
热议问题