ng-enter-stagger动画不起作用

时间:2016-05-13 13:00:32

标签: css angularjs ng-animate

我实际上是在尝试为ng-repeat创建的div列表设置动画。

我希望它们一个接一个地出现。所以我看到我可以使用ng-enter-stagger但它不起作用。

这是我的CSS:

.newsLeft.ng-enter{
    -webkit-transition:all linear 0.5s;
    transition: all linear 0.5s ;
    opacity:0;
}

.newsLeft.ng-enter-stagger{
    -webkit-transition-delay:2s;
    transition-delay:2s;

    -webkit-transition-duration:0s;
    transition-duration:0s;
}

.newsLeft.ng-enter.ng-enter-active{
    opacity:1;
}

这是HTML:

<div ng-repeat="news in newsList" class="newsLeft" animate-on-load>
  <div class="newsComponent" animate-on-load>
    <hr/>
    <div class="newsDate">{{news.date}}</div>
    <div class="newsSubT2">{{news.title}}</div>
    <div>{{news.content}}</div>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

问题是animate-on-load指令,所以删除它。

默认情况下,在视图更改后的前一个或两个摘要周期内禁用结构动画。您可以在父元素上使用ng-animate-children="true"来覆盖它。

例如:

<body ng-animate-children="true">
  <div ng-view></div>
</body>

演示: http://plnkr.co/edit/AqSt7jaLk0Nq0RKqvdhx?p=preview

请注意,这可能会触发视图中的其他动画(例如ng-show)。

如果您只想要ng-repeat的动画,可以像这样使用ng-if

<div ng-repeat="news in newsList" class="newsLeft" ng-if="ready">
  ...
</div>

在控制器中:

$timeout(function () {

  $scope.ready = true;
});