css3 – ng-an动画与ng-class指令

前端之家收集整理的这篇文章主要介绍了css3 – ng-an动画与ng-class指令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
您可以使用ng-animate与ng-class添加删除动画.我想在CSS3中制作一个动画,但在网络上没有找到很好的例子.所以我想知道人们有很好的例子,他们想分享.

我不知道我的最终动画是什么样的,但为了这个例子的目的,我只是想让div的高度逐渐增加,当我添加类myclass.

  1. <div ng-class="{{myclass:scopeVar}}" ng-animate="?????"></div>
  2.  
  3. **CSS**
  4.  
  5. .myclass.ng-add{??}
  6. .myclass.ng-add-active{??}
  7. .myclass.ng-remove{??}
  8. .myclass.ng-remove-active{??}

解决方法

使用CSS转换动画化ng类添加删除有3个阶段.这些阶段的顺序非常重要,I almost spent a day figuring out why a simple animation wasn’t working由于不正确地了解了添加类的顺序.

阶段1:

添加了classname-add / classname-remove类.

与某人可能会想到的不同,实际上,在将类添加到元素之前添加到该元素中.

这是我们应该添加过渡属性1以及动画初始状态的阶段.

阶段2:

添加删除classname类.

这是您指定元素的最终样式的地方.这个类通常与我们的动画无关.记住,我们正在动画添加/删除这个类.这个类本身甚至不需要知道它周围有一个动画.

阶段3:

添加了classname-add-active / classname-remove-active类.

在将类添加到元素之后添加.

这是我们应该指定动画的最终状态的阶段.

为了看到这一点,让我们创建一个经典的渐隐动画,当一个元素的选定状态发生变化时(使用ng-class选择类更改).

  1. angular.module('demo',['ngAnimate'])
  2. .controller('demoCtrl',function($scope) {
  3. $scope.selected = false;
  4. $scope.selectToggle = function() {
  5. $scope.selected = !$scope.selected;
  6. };
  7. });
  1. .item {
  2. width: 50px;
  3. height: 50px;
  4. background: grey;
  5. }
  6. .item.selected {
  7. /* this is the actual change to the elment
  8. * which has nothing to do with the animation
  9. */
  10. background-color: dodgerblue;
  11. }
  12. .item.selected-add,.item.selected-remove {
  13. /* Here we specify the transition property and
  14. * initial state of the animation,which is hidden
  15. * state having 0 opacity
  16. */
  17. opacity: 0;
  18. transition: opacity 3s;
  19. }
  20. .item.selected-add-active,.item.selected-remove-active {
  21. /* Here we specify the final state of the animation,* which is visible having 1 opacity
  22. */
  23. opacity: 1;
  24. }
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.js"></script>
  2. <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular-animate.js"></script>
  3. <div ng-app="demo" ng-controller="demoCtrl">
  4. <div class="item" ng-class="{selected:selected}"></div>
  5. <br>
  6. <br>
  7. <button ng-click="selectToggle();">
  8. {{selected? 'Unselect' : 'Select'}}
  9. </button>
  10. </div>

1为什么要在第一个状态中指定转换,而不是将其添加到被切换的类或元素上的静态选择器?

那么为了解释这一点,假设你需要一个单向的动画,例如淡入淡出的类添加时的淡出动画.

如果您在淡入淡出类中添加过渡属性,即使在动画之后,转换仍保留在元素上.这意味着当你的最终状态(淡出加成)被移除时,元素会慢慢退色,所以我们得到一个淡出淡出的东西,这不是我们想要的.

> Undesired result
> Desired result

猜你在找的CSS相关文章