Подтвердить что ты не робот

Скольжение между переходами маршрута angularjs

Я работаю только с 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>

Вид (ы)

<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

Спасибо

4b9b3361

Ответ 1

Для тех, кто занимается этим...

Добавьте классы 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 также есть отличное видео по анимации, если вы хотите углубленный учебник

Ответ 2

Вышеуказанные ответы верны... но я бы добавил, что имея маршруты с завершающей косой чертой:

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

Разломат ваши переходы... Angular немедленно перенаправляет на '/введение', что нарушает переход. поэтому обязательно используйте:

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

Мне понравилось 5 часов, чтобы наконец определить, почему мои переходы не будут работать. Когда мои тестовые проекты и все примеры отлично работали.

Ответ 3

Если вы используете Angular 1.2.x, тогда директива ngAnimate больше не нужна. Angular В настоящее время анимация использует .ng-enter и .ng-leave как крючки для добавления ваших преобразований. В приведенной ниже статье я очень помог узнать о новом способе создания анимации в том виде, в котором вы пытаетесь выполнить (путем анимирования маршрутов aka каждый частичный, который вставляется в директиву ngview).

Анимация приложений AngularJS: ngView