Angular는 사용자 인터페이스를 더욱 흥미롭게 만들기 위해 애니메이션을 지원합니다. 애니메이션을 사용하면 화면 전환이나 요소의 상태 변화에 부드럽고 동적인 효과를 줄 수 있습니다. Angular 애니메이션은 컴포넌트 상태 변화에 따라 애니메이션을 적용할 수 있는 강력한 도구입니다.
이번 포스트에서는 Angular 애니메이션의 기본적인 사용법과 몇 가지 실제 예제를 살펴보겠습니다.
목차
Angular 애니메이션 소개
Angular 애니메이션은 Angular 애플리케이션에서 요소의 상태 변화, 화면 전환, 또는 특정 이벤트에 따라 애니메이션을 적용할 수 있도록 하는 기능입니다. Angular의 @angular/animations
모듈을 사용하여 기본적인 애니메이션을 설정하고 제어할 수 있습니다.
애니메이션 모듈 설정하기
Angular 애니메이션을 사용하려면 먼저 애플리케이션 모듈에서 BrowserAnimationsModule
또는 NoopAnimationsModule
을 import해야 합니다. BrowserAnimationsModule
은 브라우저에서 애니메이션을 지원하고 NoopAnimationsModule
은 애니메이션을 비활성화합니다.
다음과 같이 애플리케이션 모듈에서 BrowserAnimationsModule
을 import합니다.
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
imports: [
BrowserAnimationsModule
],
// ...
})
export class AppModule { }
기본적인 애니메이션 적용하기
Angular에서 기본적인 애니메이션을 적용하는 방법은 간단합니다. 예를 들어, 요소의 페이드인 애니메이션을 적용하려면 @angular/animations
패키지에서 제공하는 trigger
, state
, transition
, style
, animate
등의 메서드를 사용하여 다음과 같이 애니메이션을 정의합니다.
import { trigger, state, style, transition, animate } from '@angular/animations';
@Component({
selector: 'app-fade-in',
template: '<div [@fadeInOut]>Hello Angular Animation</div>',
animations: [
trigger('fadeInOut', [
state('void', style({ opacity: 0 })),
state('*', style({ opacity: 1 })),
transition('void => *', animate('1s')),
transition('* => void', animate('1s'))
])
]
})
export class FadeInOutComponent { }
컴포넌트 상태에 따른 애니메이션 적용하기
Angular 애니메이션은 컴포넌트의 특정 상태에 따라 애니메이션을 적용할 수 있습니다. 예를 들어, 버튼을 클릭했을 때 요소를 확대하는 애니메이션을 적용하려면 다음과 같이 @angular/animations
패키지의 메서드를 사용하여 애니메이션을 정의합니다.
import { trigger, state, style, transition, animate } from '@angular/animations';
@Component({
selector: 'app-button-expand',
template: '<button (click)="expand()">Expand</button><div [@expandCollapse]="currentState">Angular Animation</div>',
animations: [
trigger('expandCollapse', [
state('collapsed', style({ height: '0', opacity: 0 })),
state('expanded', style({ height: '*', opacity: 1 })),
transition('collapsed <=> expanded', animate('500ms ease-in-out'))
])
]
})
export class ButtonExpandComponent {
currentState = 'collapsed';
expand() {
this.currentState = this.currentState === 'collapsed' ? 'expanded' : 'collapsed';
}
}
커스텀 트랜지션 정의하기
Angular 애니메이션을 사용하면 사용자 정의 트랜지션을 정의하여 요소의 상태 전환에 따른 애니메이션을 쉽게 적용할 수 있습니다. 다음과 같이 애니메이션을 정의하고 사용자 정의 트랜지션을 적용합니다.
import { trigger, state, style, transition, animate, keyframes } from '@angular/animations';
@Component({
selector: 'app-custom-transition',
template: '<div (click)="toggleState()" [@myCustomTransition]="state">Custom Transition</div>',
animations: [
trigger('myCustomTransition', [
transition('void => *', [
animate('1s', keyframes([
style({ opacity: 0, transform: 'translateY(-100%)', offset: 0 }),
style({ opacity: 1, transform: 'translateY(25px)', offset: 0.5 }),
style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 })
]))
]),
transition('* => void', [
animate('1s', keyframes([
style({ opacity: 1, transform: 'translateY(0)', offset: 0 }),
style({ opacity: 1, transform: 'translateY(-25px)', offset: 0.5 }),
style({ opacity: 0, transform: 'translateY(100%)', offset: 1.0 })
]))
])
])
]
})
export class CustomTransitionComponent {
state: string = 'inactive';
toggleState() {
this.state = this.state === 'inactive' ? 'active' : 'inactive';
}
}
마무리
Angular 애니메이션을 사용하여 웹 애플리케이션에 동적인 효과를 쉽게 추가할 수 있습니다. 위의 예제를 참고하여 새로운 애니메이션을 만들어보고 화면의 상태 변화에 따른 다양한 애니메이션을 적용해보세요. Angular 공식문서에서 더 자세한 내용을 확인할 수 있으니 참고하시기 바랍니다.
참고
이상으로 Angular 애니메이션에 대한 간단한 소개를 마치도록 하겠습니다. 부족한 내용이 있을 수 있으니 자세한 내용은 공식 문서를 참고하시기 바랍니다. 감사합니다.