Angularjs анимация не работает, и я попал в тупик

Это мой код, на который вы можете посмотреть, если это возможно. Ничего официального, я просто отложил этот код для последующего использования.

<script>
   var apps = angular.module('myApp', ['ngAnimate']);
   
   //header
   apps.controller('headerCtrl', function($scope) {
      $scope.header = "Animating with AngularJS and";
   $scope.headerCode= "CSS3"
   });
   
   //footer
   apps.controller('footerCtrl', function($scope) {
     $scope.footerItems = ['Footer Item 1', 'Footer Item 2', 'Footer Item 3'];
   });
   
   //animate hide/show
   apps.controller('animateCtrl', function($scope) {
     $scope.testText = "This is just to test the animation effect!!";
  $scope.toggleBox = false;
  $scope.Toggle = function() {
     $scope.toggleBox = !$scope.toggleBox;
   }
   });
  
 </script>
.hideShow.ng-enter,
 {
   transition: 0.5s linear all ;
   -moz-transition:  0.5s linear all;
   -webkit-transition:  0.5s linear all ;
   opacity:0;
   
 }
 
 .hideShow.ng-enter.ng-enter-active
 {
  opacity:1;
 }
 
 .hideShow.ng-leave 
 {
  transition: 0.25s linear all ;
   -moz-transition:  0.25s linear all;
   -webkit-transition:  0.25s linear all ;
   opacity:0;
 }
 
 .hideShow.ng-leave.ng-leave-active
 {
  opacity:0;
 }
<div class="container-fluid" ng-app="myApp">
 
  <header ng-controller="headerCtrl">
     <div class="jumbotron page-header">
      <h1>{{header}} <kbd>{{headerCode}}</kbd></h1>
     </div>
  </header>
  
  
  <!--MAIN CONTENT (animate)-->
  
     <div class="jumbotron" ng-controller="animateCtrl">
      <button class="btn btn-primary" ng-click="Toggle()">TOGGLE</button>
      <div class="hideShow"  ng-show="toggleBox"><h2>{{testText}}</h2></div>
     
  </div>
    
 
 
    <!-- FOOTER -->
    <div class="navbar navbar-inverse navbar-fixed-bottom" ng-controller="footerCtrl">
     <footer>
     <ul class="nav navbar-nav">
     <li class="navbar-brand" ng-repeat="footerItem in footerItems"> {{footerItem}}  </li>
     </ul>
   </footer>
    </div>
 
 
 </div>

Переключатель работает нормально, но я попробовал все возможные способы заставить анимацию работать без успеха. Может ли кто-нибудь помочь мне с этим? Большое спасибо!

1 ответ

Таким образом, вы не используете правильные классы для нг-шоу.

Правильные классы следующие:

.ng-hide-add.ng-hide-add-active

.ng-hide-remove.ng-hide-remove-active

Так что просто поменяйте их с теми, которые вы используете, и вам будет хорошо идти.

Хитрость, которую я использую, заключается в том, что на ваш CSS накладывается длительное время перехода, например, 5 с, после чего вы можете проверить элемент при его переходе и увидеть применяемые классы.

Кроме того, вы должны просто добавить переходы в базовый класс, так что...

.hideShow {
  transition: .25s linear all ;
  -moz-transition:  .25s linear all;
  -webkit-transition:  .25s linear all ;
}

Плункер для доказательства! http://plnkr.co/edit/JJBv9pk8CSqN7Mmv8Qcx?p=preview

Редактировать для получения дополнительной информации: я считаю, что.ng-оставить / ввести для нг-повторов, когда элементы меняются. У каждого типа вещей разные классы.

Другие вопросы по тегам