Angular로 간단 애니메이션 : 왼쪽에서 페이드 인 편
9159 단어 Angular자바스크립트TypeScriptNode.js
첫 투고의 이번은 Angular에서 간단한 애니메이션을 움직이는 내용에 대해 투고합니다.
많은 웹 애니메이션은 CSS를 사용하여 움직이고 있지만 Angular에서도 쉽게 만들 수 있습니다.
절차 공개를 위해 Stackblitz 위에서 작업하고 있습니다.
이번 완성 데모
app.module.ts에 Animations 모듈 추가
Angular에서 애니메이션을 사용하려면 BrowserAnimationsModule이 필요하므로 추가합니다.
모듈의 추가 설치가 필요한 경우 추가하십시오.
app.module.tsimport { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; // 追加
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule,
BrowserAnimationsModule // 追加
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
애니메이션으로 움직이는 대상 설정
애니메이션이 시작되는 시점을 감지하기 위해 Angular는 트리거가 필요합니다.
trigger() 함수는 변경을 모니터링하기 위해 속성 이름을 설명합니다. 변경이 발생하면 트리거는 정의에 포함된 조치를 시작합니다. 여기에서는 트리거명을 "fadein-left"를 둡니다.
app.component.html<div @fadein-left>
<div>テキスト</div>
</div>
컴포넌트 파일에서 애니메이션 함수 가져오기
이번에는 다음의 함수를 이용합니다.
app.component.tsimport {
trigger,
style,
animate,
transition,
query,
sequence,
} from '@angular/animations';
// …省略
애니메이션 메타데이터 속성 추가
구성 요소 파일의 @Component() 데코레이터에 animations:라는 메타데이터 속성을 추가합니다. 애니메이션을 정의한 트리거를 animations 메타데이터 속성에 배치합니다. 그 중에 이번 트리거가 되는 "fadein-left"를 설정합니다.
app.component.ts// …省略
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ],
animations: [
trigger('fadein-left', [
// -----------------------------
// ここにアニメーション内容を書く
// -----------------------------
]),
]
})
// …省略
움직이는 내용을 쓰다
드디어 애니메이션 시키고 싶은 내용을 기술합니다.
이번 스토리에서는 화면 왼쪽에서 후왓와 페이드 인하는 흐름이되므로 다음과 같이 설정
app.component.ts// …省略
animations: [
trigger('fadein-left', [
transition('void => *', [
sequence([
// アニメーション1:初期表示位置は不可視化しておく
query('div', style({
opacity: 0, // 不可視化
"margin-left": '-20px'
})),
// アニメーション2:スタート開始時間調整(ここでは1秒後に開始)
query('div', animate('1000ms', style({}))),
// アニメーション3:2秒かけて左から可視化される
query('div', animate('2000ms ease-out', style({
opacity: 1,
"margin-left": '0px',
}))),
]),
]),
]),
]
// …省略
애니메이션 내용의 보충으로서, 「transition('void => *'」는 HTML 요소라든지 DOM내에 지정의 트리거가 나타났을 때에 미정도리("void")로부터는 정의 끝난*(별표)에 처리되어 해석이 되어 후속의 처리가 자동 실행되는 구조가 됩니다.query는 트리거 정의되고 있는 HTML 요소내의 div에 대해서 처리가 행해집니다.
나중에 쉽게
Angular에서 애니메이션을 사용하려면 BrowserAnimationsModule이 필요하므로 추가합니다.
모듈의 추가 설치가 필요한 경우 추가하십시오.
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; // 追加
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule,
BrowserAnimationsModule // 追加
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
애니메이션으로 움직이는 대상 설정
애니메이션이 시작되는 시점을 감지하기 위해 Angular는 트리거가 필요합니다.
trigger() 함수는 변경을 모니터링하기 위해 속성 이름을 설명합니다. 변경이 발생하면 트리거는 정의에 포함된 조치를 시작합니다. 여기에서는 트리거명을 "fadein-left"를 둡니다.
app.component.html<div @fadein-left>
<div>テキスト</div>
</div>
컴포넌트 파일에서 애니메이션 함수 가져오기
이번에는 다음의 함수를 이용합니다.
app.component.tsimport {
trigger,
style,
animate,
transition,
query,
sequence,
} from '@angular/animations';
// …省略
애니메이션 메타데이터 속성 추가
구성 요소 파일의 @Component() 데코레이터에 animations:라는 메타데이터 속성을 추가합니다. 애니메이션을 정의한 트리거를 animations 메타데이터 속성에 배치합니다. 그 중에 이번 트리거가 되는 "fadein-left"를 설정합니다.
app.component.ts// …省略
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ],
animations: [
trigger('fadein-left', [
// -----------------------------
// ここにアニメーション内容を書く
// -----------------------------
]),
]
})
// …省略
움직이는 내용을 쓰다
드디어 애니메이션 시키고 싶은 내용을 기술합니다.
이번 스토리에서는 화면 왼쪽에서 후왓와 페이드 인하는 흐름이되므로 다음과 같이 설정
app.component.ts// …省略
animations: [
trigger('fadein-left', [
transition('void => *', [
sequence([
// アニメーション1:初期表示位置は不可視化しておく
query('div', style({
opacity: 0, // 不可視化
"margin-left": '-20px'
})),
// アニメーション2:スタート開始時間調整(ここでは1秒後に開始)
query('div', animate('1000ms', style({}))),
// アニメーション3:2秒かけて左から可視化される
query('div', animate('2000ms ease-out', style({
opacity: 1,
"margin-left": '0px',
}))),
]),
]),
]),
]
// …省略
애니메이션 내용의 보충으로서, 「transition('void => *'」는 HTML 요소라든지 DOM내에 지정의 트리거가 나타났을 때에 미정도리("void")로부터는 정의 끝난*(별표)에 처리되어 해석이 되어 후속의 처리가 자동 실행되는 구조가 됩니다.query는 트리거 정의되고 있는 HTML 요소내의 div에 대해서 처리가 행해집니다.
나중에 쉽게
<div @fadein-left>
<div>テキスト</div>
</div>
이번에는 다음의 함수를 이용합니다.
app.component.ts
import {
trigger,
style,
animate,
transition,
query,
sequence,
} from '@angular/animations';
// …省略
애니메이션 메타데이터 속성 추가
구성 요소 파일의 @Component() 데코레이터에 animations:라는 메타데이터 속성을 추가합니다. 애니메이션을 정의한 트리거를 animations 메타데이터 속성에 배치합니다. 그 중에 이번 트리거가 되는 "fadein-left"를 설정합니다.
app.component.ts// …省略
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ],
animations: [
trigger('fadein-left', [
// -----------------------------
// ここにアニメーション内容を書く
// -----------------------------
]),
]
})
// …省略
움직이는 내용을 쓰다
드디어 애니메이션 시키고 싶은 내용을 기술합니다.
이번 스토리에서는 화면 왼쪽에서 후왓와 페이드 인하는 흐름이되므로 다음과 같이 설정
app.component.ts// …省略
animations: [
trigger('fadein-left', [
transition('void => *', [
sequence([
// アニメーション1:初期表示位置は不可視化しておく
query('div', style({
opacity: 0, // 不可視化
"margin-left": '-20px'
})),
// アニメーション2:スタート開始時間調整(ここでは1秒後に開始)
query('div', animate('1000ms', style({}))),
// アニメーション3:2秒かけて左から可視化される
query('div', animate('2000ms ease-out', style({
opacity: 1,
"margin-left": '0px',
}))),
]),
]),
]),
]
// …省略
애니메이션 내용의 보충으로서, 「transition('void => *'」는 HTML 요소라든지 DOM내에 지정의 트리거가 나타났을 때에 미정도리("void")로부터는 정의 끝난*(별표)에 처리되어 해석이 되어 후속의 처리가 자동 실행되는 구조가 됩니다.query는 트리거 정의되고 있는 HTML 요소내의 div에 대해서 처리가 행해집니다.
나중에 쉽게
// …省略
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ],
animations: [
trigger('fadein-left', [
// -----------------------------
// ここにアニメーション内容を書く
// -----------------------------
]),
]
})
// …省略
드디어 애니메이션 시키고 싶은 내용을 기술합니다.
이번 스토리에서는 화면 왼쪽에서 후왓와 페이드 인하는 흐름이되므로 다음과 같이 설정
app.component.ts
// …省略
animations: [
trigger('fadein-left', [
transition('void => *', [
sequence([
// アニメーション1:初期表示位置は不可視化しておく
query('div', style({
opacity: 0, // 不可視化
"margin-left": '-20px'
})),
// アニメーション2:スタート開始時間調整(ここでは1秒後に開始)
query('div', animate('1000ms', style({}))),
// アニメーション3:2秒かけて左から可視化される
query('div', animate('2000ms ease-out', style({
opacity: 1,
"margin-left": '0px',
}))),
]),
]),
]),
]
// …省略
애니메이션 내용의 보충으로서, 「transition('void => *'」는 HTML 요소라든지 DOM내에 지정의 트리거가 나타났을 때에 미정도리("void")로부터는 정의 끝난*(별표)에 처리되어 해석이 되어 후속의 처리가 자동 실행되는 구조가 됩니다.query는 트리거 정의되고 있는 HTML 요소내의 div에 대해서 처리가 행해집니다.
나중에 쉽게
뿐입니다.
아주 간단하네요.
이번 완성 데모
Reference
이 문제에 관하여(Angular로 간단 애니메이션 : 왼쪽에서 페이드 인 편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/inukujira/items/9d0b1cf0893dcb558b41텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)