一、routerTransition的指令字面意思是路由过分,经过查询资料routerTransition是路由切换过程当中所要显示的动画效果。 二、angular4把动画效果的包分离成单独的包 @angular/animations,若是要使用动画须要安装@angular/animationsnpm
npm install --save @angular/animations // 根model须要导入BrowserAnimationsModule import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; @NgModule({ ... imports: [BrowserAnimationsModule], ... }) export class PizzaPartyAppModule { }
三、编写动画效果angular4
import {animate, state, style, transition, trigger} from '@angular/animations'; export function routerTransition() { return slideToTop(); } export function slideToRight() { return trigger('routerTransition', [ state('void', style({})), state('*', style({})), transition(':enter', [ style({transform: 'translateX(-100%)'}), animate('0.5s ease-in-out', style({transform: 'translateX(0%)'})) ]), transition(':leave', [ style({transform: 'translateX(0%)'}), animate('0.5s ease-in-out', style({transform: 'translateX(100%)'})) ]) ]); } export function slideToLeft() { return trigger('routerTransition', [ state('void', style({})), state('*', style({})), transition(':enter', [ style({transform: 'translateX(100%)'}), animate('0.5s ease-in-out', style({transform: 'translateX(0%)'})) ]), transition(':leave', [ style({transform: 'translateX(0%)'}), animate('0.5s ease-in-out', style({transform: 'translateX(-100%)'})) ]) ]); } export function slideToBottom() { return trigger('routerTransition', [ state('void', style({})), state('*', style({})), transition(':enter', [ style({transform: 'translateY(-100%)'}), animate('0.5s ease-in-out', style({transform: 'translateY(0%)'})) ]), transition(':leave', [ style({transform: 'translateY(0%)'}), animate('0.5s ease-in-out', style({transform: 'translateY(100%)'})) ]) ]); } export function slideToTop() { return trigger('routerTransition', [ state('void', style({})), state('*', style({})), transition(':enter', [ style({transform: 'translateY(100%)'}), animate('0.5s ease-in-out', style({transform: 'translateY(0%)'})) ]), transition(':leave', [ style({transform: 'translateY(0%)'}), animate('0.5s ease-in-out', style({transform: 'translateY(-100%)'})) ]) ]); }
四、路由切换视图使用动画ide
import {routerTransition} from '../router.animations'; @Component({ ... animations: [routerTransition()] ... }) <div [@routerTransition]></div>
angular4 的动画使用动画