在路径转换angularjs之间滑动

时间:2013-11-28 18:35:15

标签: angularjs ng-animate

我只和Angular合作了大约一个星期,所以如果我的代码是垃圾,我会道歉。

我正在尝试在路由转换之间创建滑动操作。我可以在幻灯片中创建效果,但不能在路径转换之间创建效果。

无论如何代码如下: NAV

<li><a ng-click="go('/')"  class = "intro currentLink navLinks">Intro</a></li>
<li><a ng-click="go('/why')"  class = "why navLinks">Why</a></li>
<li><a ng-click="go('/resume')" class = "resume navLinks">Res</a></li>
<li><a ng-click="go('/qualified')" class = "qualified navLinks">How</a></li>
<li><a ng-click="go('/contact')" class = "contact navLinks">Contact me</a></li>

视图(S)

<div class = "pages">
    <div ng-view id="slides" ng-animate="'slide'">
        <!--inside main view-->
    </div><!--end main view-->
</div><!--end pages-->

CSS

.slide-leave-setup {
    -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
    -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
    -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
}
.slide-enter-setup {
    -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
    -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
    -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
}
.slide-enter-setup {
    position: absolute;
    left: 1300px;
}
.slide-enter-start {
    left: 0;
}
.slide-leave-setup {
    position: absolute;
    left: -1700px;
}
.slide-leave-start {
    right: 0;
}

包括

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.3/angular.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular-animate.min.js"></script>
<script src="http://code.angularjs.org/1.2.3/angular-route.min.js"></script>
<script src="http://code.angularjs.org/1.1.2/angular-sanitize.js"></script>
<script src="js/vendor/ui-bootstrap-custom-tpls-0.6.0.js"></script> 

的javascript:

var app = angular.module('MyApp', ['ui.bootstrap', 'ngSanitize', 'ngRoute', 'ngAnimate']);

https://github.com/arttay/blizz

的完整项目

谢谢

3 个答案:

答案 0 :(得分:19)

任何人都在谷歌这个....

将类ng-enter / ng-leave / .ng-enter-active / .ng-leave-active添加到您的css类。 实施例

.slide-animate.ng-enter, .slide-animate.ng-leave{
 -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
  -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
   -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
      transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
 }


.slide-animate.ng-enter.ng-enter-active {
 position: absolute;
 left: 1300px;
}

.slide-animate.ng-enter {
 left: 0;
}

.slide-animate.ng-leave.ng-leave-active {
 position: absolute;
 left: -1700px;
 }

.slide-animate.ng-leave {
 right: 0;
 }
如果你想要一个深入的教程

Egghead.io也有一些很棒的动画视频

答案 1 :(得分:2)

上面的答案是正确的......但我想补充一点是带有斜杠的路线:

.when('/introduction/', ...)

将破坏你的过渡...... Angular立即重定向到&#39; / introduction&#39;这打破了过渡。所以一定要使用:

.when('/introduction', ...)

我花了5个小时来最终确定为什么我的过渡不起作用..当我的测试项目和所有示例都运行良好时。

答案 2 :(得分:1)

如果您使用的是Angular 1.2.x,则不再需要ngAnimate指令。 Angular animate目前使用.ng-enter和.ng-leave作为钩子来添加转换。下面的文章我发现非常有助于以你想要完成的方式学习动画的新方法(通过动画路径,也就是插入到ngview指令中的每个部分)。

Animating AngularJS Apps: ngView