在ngSrc指令中使用ngAnimate的滑块动画

时间:2014-06-10 23:36:40

标签: javascript angularjs animation ng-animate

我有一些代码,例如https://stackoverflow.com/a/18235271/3018275

所以我想做一个像http://www.nganimate.org/angularjs/ng-switch/slider-css3-transition-animation

这样的动画

但是我已经看到ng-animate不适用于ng-src,所以我想用ng-show和watch事件来设置一个布尔变量,但我不能这样做。

任何人都可以建议我吗?

1 个答案:

答案 0 :(得分:1)

最佳做法是为滑块制作一个指令,但你可以这样做。它缺少一些代码,但这是你应该采用的方法。

在你的HTML中:

<div id="image-slider" ng-style="sliderStyle">
    <div class="image" ng-repeat="(key, source) in imagesServingUrl track by $index" ng-style="imgStyle">
        <img class="productImage" ng-src="{{source.serving_url}}" ng-class="{'hideImg':(current!=key), 'showImg':(current==key)}" />
        <span class="arrow-right" ng-click="next(current+1)"/>
        <span class="arrow-left" ng-click="prev(current-1)"/>
    </div>
</div>

` 在你的CSS中:

img.showImg {
  opacity: 1;
  -webkit-transition: 0.5s cubic-bezier(0.49, 0, 0.5, 1) all;
  -moz-transition: 0.5s cubic-bezier(0.49, 0, 0.5, 1) all;
  -ms-transition: 0.5s cubic-bezier(0.49, 0, 0.5, 1) all;
  -o-transition: 0.5s cubic-bezier(0.49, 0, 0.5, 1) all;
  transition: 0.5s cubic-bezier(0.49, 0, 0.5, 1) all;
}

img.hideImg {
  opacity: 0;
  -webkit-transition: 0.5s cubic-bezier(0, 0.5, 1, 0.47) all;
  -moz-transition: 0.5s cubic-bezier(0, 0.5, 1, 0.47) all;
  -ms-transition: 0.5s cubic-bezier(0, 0.5, 1, 0.47) all;
  -o-transition: 0.5s cubic-bezier(0, 0.5, 1, 0.47) all;
  transition: 0.5s cubic-bezier(0, 0.5, 1, 0.47) all;
}

在您的控制器中

$scope.next = function(next) {
  $scope.current = next;
  $scope.percent -= 100;
  return $scope.imgStyle = {
    transform: 'translateX(' + $scope.percent + '%)',
    width: $scope.sliderWidth,
    height: $scope.sliderHeight
  };
};