Использование angularjs 1.2, я хотел бы применить переходные анимации к моим представлениям для входа и выхода. Я использую 'ngAnimate', чтобы сделать это возможным, однако анимация перехода происходит только на моей домашней странице. Я использовал этот article в качестве руководства.Переходы анимации с угловым ng-видом
HTML (index.html):
<body ng-controller="mainCtrl" id="outer">
<div id="page">
<!-- partial views -->
<div class="page {{pageClass}}" ng-view></div>
</body>
Я создать контроллер для каждой страницы и прикладной класс в попытке манипулировать DOM с помощью CSS3. Есть ли лучший/более чистый способ сделать это с угловой, пожалуйста?
AngularJS:
var myWebsite = angular.module('myWebsite',['ngRoute', 'duScroll','ngSanitize','ngAnimate'])
.config(function($routeProvider){
$routeProvider
.when('/', {
templateUrl:'home.html',
controller:'mainCtrl'
})
.when('/about', {
templateUrl:'about.html',
controller:'aboutCtrl'
})
.when('/contact',{
templateUrl:'contact.html',
controller:'contactCtrl'
})
.when('/services', {
templateUrl:'services.html',
controller:'servicesCtrl'
})
.otherwise({
templateUrl:'home.html',
controller:'mainCtrl'
});
})
.controller('mainCtrl',function($scope){
$scope.pageClass = 'home';
})
.controller('aboutCtrl',function($scope){
$scope.pageClass = 'about';
})
.controller('servicesCtrl',function($scope){
$scope.pageClass = 'services';
})
.controller('contactCtrl',function($scope){
$scope.pageClass = 'contact';
})
...
Я использую CSS в попытке создать slidein на enter'ng введите»и slideout отпуска 'нг-отпуск'. Я применил эти стили только к .about и .home, хотя, когда я просматриваю свой код в Google Developer, класс «.home» не динамически генерируется с помощью контроллера angularjs, но он генерируется. Я считаю, что анимация происходит на классе «.page», который не генерируется динамически.
CSS:
/* --- page specific animations --- */
/* home */
.page.ng-enter, .about.ng-enter{
-webkit-animation:slideInUp 0.5s both ease-in;
-moz-animation:slideInUp 0.5s both ease-in;
animation:slideInUp 0.5s both ease-in;
z-index: 8888;
}
/* leave */
.page.ng-leave, .about.ng-enter{
-webkit-animation:slideDownOut 0.5s both ease-in;
-moz-animation:slideDownOut 0.5s both ease-in;
animation:slideDownOut 0.5s both ease-in;
z-index: 9999;
}
/* --entering animation--*/
/* slide in from the bottom */
@keyframes slideInUp {
from { transform:translateY(100%); opacity: 1; }
to { transform: translateY(0); opacity: .5; }
}
@-moz-keyframes slideInUp {
from { -moz-transform:translateY(100%); opacity: 1;}
to { -moz-transform: translateY(0); opacity: .5;}
}
@-webkit-keyframes slideInUp {
from { -webkit-transform:translateY(100%); opacity: 1;}
to { -webkit-transform: translateY(0); opacity: .5;}
}
/* --leaving animation--*/
/* slide in from the bottom */
@keyframes slideDownOut {
from { transform: translateX(0%); opacity: .5; }
to { transform: translateY(100%); opacity: 0;}
}
@-moz-keyframes slideDownOut {
from { -moz-transform: translateX(0%); opacity: .5; }
to { -moz-transform: translateY(100%); opacity: 0;}
}
@-webkit-keyframes slideDownOut {
from { -webkit-transform: translateX(0%); opacity: .5;}
to { -webkit-transform: translateY(100%); opacity: 0;}
}