【问题标题】:Angular JS move animation doesn't workAngular JS移动动画不起作用
【发布时间】:2013-07-11 23:26:15
【问题描述】:

我正在尝试使用 AngularJS 构建幻灯片,例如 http://caroufredsel.dev7studios.com/ 带有箭头的幻灯片(下一个和上一个)。

这里是 HTML 代码:

<div class="carousel">
   <div class="left"><input type="button" value="Back" ng-click="slideBack()" ng-disabled="currentSlide == 0" /></div>
   <div class="content">
         <div class = "slide" ng-repeat="img in imgs | startFrom:currentSlide | limitTo:slidesSize" ng-animate="{enter: 'animate-enter', leave: 'animate-leave', move: 'animate-move'}">
    <img ng-src="{{img.url}}" />
         </div>
   </div>
   <div class="right"><input type="button" value="Next" ng-click="slideNext()" ng-disabled="currentSlide+slidesSize >= imgs.length" /></div>
        </div>

CSS:

.animate-enter, .animate-move, .animate-leave
{ 
    -webkit-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    -moz-transition: 300ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    -ms-transition: 300ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    -o-transition: 300ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    transition: 300ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
} 

.animate-enter {
      left: 400px;
      position:relative;
      opacity: 0;
}
.animate-enter.animate-enter-active {
      left: 0px;
      opacity: 1;
}

.animate-move {
      position:relative;
}
.animate-move.animate-move-active{
      left: -200px;
}

.animate-leave {
      left: 0;
}
.animate-leave.animate-leave-active{
      left: -100%;
      position:absolute;
}

这是过滤器:

angular.module('carouselFilters', []).filter('startFrom', function() {
    return function(input, start) {
        start = +start;
        return input.slice(start);
    }
});

控制器:

function carouselCtrl($scope, $http) {
  $scope.currentSlide = 0;
  $scope.slidesSize = 3;

  $http.get('carousel_images.json').success(function(data) {
        $scope.imgs = data;
  });

  $scope.slideNext = function(){
        $scope.currentSlide++;
  }

  $scope.slideBack = function(){
        $scope.currentSlide--;
  }


}

animate-enter 和 animate-leave 工作正常,但 animate-move 不起作用,知道吗?

谢谢。

【问题讨论】:

    标签: css animation angularjs


    【解决方案1】:
    • 在将 DOM 元素添加到重复列表时输入。
    • 从重复列表中删除 DOM 元素时离开。
    • 当 DOM 元素从重复列表中的一个位置移动到另一个位置时移动。

    我从 nganimate.org 的一个示例开始。

    在 ng-repeat 下有一个项目列表

    line 21: <li ng-animate="'animate'" ng-repeat="name in names | filter:search">
    

    在 style.css 下,我只是使用了与您相同的 css。

    我创建了一个简单的按钮,可以使用 _.shuffle 将 li 随机播放,它会执行您描述的动画。

    <button ng-click="shuffle()">Shuffle the List</button>
    

    我认为更多的是您在重复列表中添加/删除而不是实际移动元素?希望这是有道理的。

    对不起,它保存了错误的 - http://plnkr.co/edit/ZXkwx7Skuy42ndWexMt0

    【讨论】:

    • 但是即使我在重复列表中添加/删除,这是否意味着添加/删除的项目将作为 leave-anim 或 enter-anim 处理?问题是新项目或离开项目与动画效果很好,已经改变的项目,在没有动画的情况下改变它们的位置。
    • 我认为是这样的:移动 - 当相邻项目被过滤掉导致重新排序时。我的过滤器删除了第一个元素,它会导致列表重新排序!
    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 2014-06-19
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多