亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Angular4.0動畫操作實例詳解

2019-11-19 11:36:38
字體:
來源:轉載
供稿:網友

本文實例講述了Angular4.0動畫操作。分享給大家供大家參考,具體如下:

粗略的記錄一下angular4的動畫

先看一下angular中文網關于這個給的例子。

有兩個組件home,about。 路徑配置什么的這里就不細說了,之前的博文有說過,我就貼一下代碼,很好理解的,

需要import的東西我先說一下,我只貼了使用動畫要用的東西,其他的我省略了,

app.module.ts

import { BrowserModule } from '@angular/platform-browser';import {BrowserAnimationsModule} from '@angular/platform-browser/animations';@NgModule({  ... imports: [ BrowserModule, BrowserAnimationsModule, AppRouting ], ...})

在這個簡單的例子里我要對app.component.html里的內容進行animate,所以我的

app.component.ts

@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], animations: [] // 這里代碼我省略了,先說一下結構,后面說具體實現。})

以上就是需要寫動畫實現的基本結構,下面貼實現這個例子的代碼。為了方便閱讀,我把代碼解釋就貼在代碼旁邊

例一:

這是路由配置:

import {RouterModule, Routes} from '@angular/router';import {HomeComponent} from "./home/home.component";import {AboutComponent} from "./about/about.component";const routes: Routes = [ { path: '', redirectTo: 'home', pathMatch: 'full' }, { path: 'home', component: HomeComponent, data: { state: 'home' } }, { path: 'about', component: AboutComponent, data: { state: 'about' } }];export const AppRouting = RouterModule.forRoot(routes, { useHash: true});

app.component.html

<nav> <a routerLink="home" routerLinkActive="active">Home</a> <a routerLink="about" routerLinkActive="active">About</a></nav><main [@routerTransition] = "gg(o)"> <router-outlet #o="outlet"></router-outlet></main><div [@queryAnimation]="goAnimate()"> <div class="content"> Blah blah blah </div> <h1>Title</h1></div> <!--  [@routerTransition]="gg(o)" ,api:transition declares the sequence of animation steps that will be run when the provided stateChangeExpr value is satisfied. stateChangeExpr即等號左邊即動畫名稱,注意中括號和@符不能省略,等號右邊是一個函數,也可以是變量,滿足條件便可以讓動畫進行,一個動畫可以多次使用  -->

app.component.ts

import { Component } from '@angular/core';import {routerTransition} from './router.animation';import {animate, group, query, stagger, style, transition, trigger} from "@angular/animations";@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], animations: [ trigger('routerTransition', [ // 第一個參數是動畫名稱 stateChangeExpr  transition('* <=> *', [ // 指定什么時候執行動畫,狀態的來源可以是簡單的對象屬性,也可以是由方法計算出來的值。重點是,我們得能從組件模板中讀取它。官網上有提供一些通配符,[傳送門](https://angular.cn/api/animations/transition)  query(':enter, :leave', style({ position: 'fixed', width: '100%' }), { optional: true }),  query('.block', style({ opacity: 0 }), { optional: true }),  group([ // block executes in parallel      query(':enter', [style({ transform: 'translateX(100%)' }),      animate('0.5s ease-in-out', style({ transform: 'translateX(0%)' }))], { optional: true }),      query(':leave', [style({ transform: 'translateX(0%)' }),      animate('0.5s ease-in-out', style({ transform: 'translateX(-100%)' }))], { optional: true })     ]),   query(':enter .block', stagger(400, [style({ transform: 'translateY(100px)' }),      animate('1s ease-in-out', style({ transform: 'translateY(0px)', opacity: 1 })),    ]), { optional: true }),  ]) ]),]})export class AppComponent { public exp = ''; gg(outlet) { // 傳遞進入的組件的信息 console.log(outlet.activatedRouteData.state); return outlet.activatedRouteData.state; }}

效果動圖在最后。

比對著官網給的API,總結一下動畫部分~

我是按自己的理解說的,有不對的地方還請多多指教,共勉!O(∩_∩)O~

  • stateChangeExpr

即動畫名稱,它的屬性值可以是字符串也可以是函數,若是函數,則每次狀態發生改變都會重新執行,若函數返回true,則對應的動畫就會執行。

  • transition

它里面的動畫只在滿足條件時執行,過了這個點它就變回原始樣式了,

  • state

可以保持動畫樣式

  • :enter 、 :leave

即對應void => * 、 * => void 狀態

例子二

app.component.html

<div [@queryAnimation]="goAnimate()"> <h1>Title</h1> <div class="content"> Blah blah blah </div></div>

app.component.ts

import { Component } from '@angular/core';import {animate, group, query, stagger, state, style, transition, trigger} from "@angular/animations";@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], animations: [ trigger('queryAnimation', [  transition('* => *', [   query('h1', style({ opacity: 0 , color: 'red'})),   query('.content', style({ opacity: 0, color: 'green', width: '100px', height: '100px', border: '1px solid red' })),   query('h1', animate(1000, style({ opacity: 1, color: ' blue' }))),   query('.content', animate(1000, style({ opacity: 1, width: '50px', height: '100px', border: '10px solid green'})),    {optional: true}), ]),  transition(':leave', [  style({color: 'pink'}),  animate(2000)  ])]),]})export class AppComponent { public gg: string; constructor() { } goAnimate() { return true; }}

這個gif有點卡,但是可以大概看出路由切換時是有動畫的。這是上面兩個例子的效果圖

state只能放在trigger里,不能擱在transition里

目前就這么點,才看了一點,以后慢慢補充~~~

更多關于AngularJS相關內容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結》、《AngularJS入門與進階教程》及《AngularJS MVC架構總結

希望本文所述對大家AngularJS程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美黑人性猛交| 亚洲丝袜在线视频| 久久久国产成人精品| 91精品国产综合久久香蕉最新版| 国产一区二区三区欧美| 亚洲欧美日韩成人| 国产成人精品免费久久久久| 亚洲欧美国产一区二区三区| 亚洲精品v欧美精品v日韩精品| 国产精品久久久久久超碰| 欧美激情精品久久久久久大尺度| 欧美精品一二区| 精品丝袜一区二区三区| 久久精品男人天堂| 国产日韩欧美在线| 国产这里只有精品| 国产97在线视频| 日韩激情在线视频| 国产美女高潮久久白浆| 另类视频在线观看| 国产免费观看久久黄| 欧美性高跟鞋xxxxhd| 亚洲国产美女精品久久久久∴| 亚洲xxxx妇黄裸体| 亚洲精品一区二区在线| 久久人人97超碰精品888| 欧美视频中文字幕在线| 欧美一乱一性一交一视频| 69av在线视频| 久久国产精品影片| 亚洲女人天堂av| 欧美日韩激情视频| 日韩美女视频在线观看| 日韩中文字幕不卡视频| 懂色av中文一区二区三区天美| 久久精品视频免费播放| 欧美网站在线观看| 亚洲一级片在线看| 色偷偷噜噜噜亚洲男人的天堂| 国产精品久久久久免费a∨| 国产精品丝袜一区二区三区| 欧美日韩另类字幕中文| 国产精品扒开腿做爽爽爽男男| 国产在线拍偷自揄拍精品| 亚洲欧美激情视频| 国产99视频精品免视看7| 午夜精品一区二区三区在线| 97香蕉超级碰碰久久免费软件| 97国产在线观看| 欧美国产视频一区二区| 久久影视电视剧免费网站| 欧美激情中文网| 国外日韩电影在线观看| 91视频九色网站| 久久黄色av网站| 91av视频在线| 日韩经典一区二区三区| 国产精自产拍久久久久久蜜| 国产精品久久91| 国模gogo一区二区大胆私拍| 日韩av免费看网站| 久久午夜a级毛片| 亚洲欧美国产一本综合首页| 国模叶桐国产精品一区| 日本三级久久久| 亚洲人精品午夜在线观看| 欧美激情一级欧美精品| www日韩欧美| 成人a级免费视频| 成人免费福利视频| 91九色国产在线| 欧美激情精品久久久久久| 国产精品久久色| 欧美激情乱人伦一区| 欧洲s码亚洲m码精品一区| 色偷偷av亚洲男人的天堂| 久久成人免费视频| 欧美黑人狂野猛交老妇| 欧美疯狂xxxx大交乱88av| 国产成人精品一区二区| 亚洲一区免费网站| 国产精品露脸自拍| 日韩大胆人体377p| 亚洲精品网站在线播放gif| 欧美丰满老妇厨房牲生活| 欧美日韩在线视频一区二区| 日韩国产激情在线| 欧美大片在线免费观看| 日本久久久久久| 亚洲免费一级电影| 91视频国产一区| 欧美精品日韩三级| 中文综合在线观看| 久久99久久99精品免观看粉嫩| 国产精品日本精品| 精品久久在线播放| 亚洲xxxxx性| 5278欧美一区二区三区| 亚洲精品aⅴ中文字幕乱码| 国产精品观看在线亚洲人成网| 亚洲一区二区三区香蕉| 伦伦影院午夜日韩欧美限制| 午夜精品久久久久久99热| 亚洲无限av看| 国产91网红主播在线观看| 日产精品99久久久久久| 国产精品亚洲一区二区三区| 亚洲图片在线综合| 国产精品老女人精品视频| 国内精品中文字幕| 97超级碰碰碰久久久| 亚洲欧美在线免费| 91久久精品久久国产性色也91| 亚洲国产成人精品久久久国产成人一区| 亚洲性日韩精品一区二区| 亚洲精品自拍偷拍| 国产精品成人av性教育| 欧美日韩在线第一页| 黑人巨大精品欧美一区免费视频| 欧美精品第一页在线播放| 一区二区福利视频| 国产97色在线|日韩| 国产成人精品免高潮在线观看| 午夜精品久久久久久久男人的天堂| 国产精品第七影院| 国产z一区二区三区| 91精品国产高清| 91久久国产婷婷一区二区| 欧美激情一区二区三区成人| 国产精品丝袜一区二区三区| 欧美激情国产日韩精品一区18| 91精品国产乱码久久久久久蜜臀| 91美女片黄在线观| 国产精品成人在线| 日韩精品视频免费在线观看| 91精品国产高清| 欧美尺度大的性做爰视频| 国产丝袜一区二区三区免费视频| 日韩高清电影免费观看完整版| 久久午夜a级毛片| 成人性生交大片免费观看嘿嘿视频| 国产亚洲日本欧美韩国| 91精品久久久久久久久不口人| 欧美另类交人妖| 国产欧美一区二区| 亚洲精品中文字幕有码专区| 91在线无精精品一区二区| 91热福利电影| 亚洲人成网站999久久久综合| 欧美亚洲视频在线观看| 久久久精品国产一区二区| 国产精品日韩精品| 国产成人精品国内自产拍免费看| 日韩电影中文字幕在线观看| 久久精品视频网站| 国产精品爱啪在线线免费观看| 国产精品wwwwww| 日韩欧美国产中文字幕| 日本精品免费一区二区三区| 亚洲国产美女精品久久久久∴| 日韩人体视频一二区| 91深夜福利视频| 精品女同一区二区三区在线播放| 欧美猛交ⅹxxx乱大交视频|