Angular Animations
Angular-இல் அனிமேஷன்கள் declarative முறையில் உள்ளன: component-இல் trigger/transition/animate-ஐ வரையறுத்து, தரவுகளிலிருந்து state-ஐ toggle செய்யவும்; app-wide-ஆக provideAnimations() மூலம் செயல்படுத்தவும்.
அனிமேஷன் அத்தியாவசியங்கள்
trigger: டெம்ப்ளேட்டில் bind செய்யப்பட்ட ஒரு பெயரிடப்பட்ட அனிமேஷனை வரையறுக்கவும் (எ.கா., [@openClose]).
transition: எப்போது இயங்கும் என்பதை அறிவிக்கவும் (state மாற்றங்கள் அல்லது wildcards போன்ற * <=> *).
animate: கால அளவு/எளிதாக்குதல் மற்றும் style() மூலம் இறுதி பாணிகளை அமைக்கவும்.
அமைப்பு:
- நிறுவு: npm install @angular/animations
- செயல்படுத்து: provideAnimations() மூலம் app-wide-ஆக அனிமேஷன்களை வழங்கவும்
- தவிர்க்க: provideNoopAnimations()-ஐப் பயன்படுத்தி இயக்கத்தை முடக்கவும் (எ.கா., சோதனைகளில்)
அடிப்படை அனிமேஷன் அமைப்பு
import { trigger, state, style, transition, animate } from '@angular/animations';
@Component({
animations: [
trigger('openClose', [
state('open', style({ opacity: 1 })),
state('closed', style({ opacity: 0 })),
transition('open <=> closed', [animate('200ms ease-in-out')])
])
]
})
class App {}
Jassif Team குறிப்பு:
அனிமேஷன்களை component-இல் declarative-ஆக வைத்து, state மூலம் toggle செய்யவும்.
எடுத்துக்காட்டு விளக்கம்
trigger('openClose'): டெம்ப்ளேட்டில் [@openClose] உடன் பயன்படுத்தப்படும் பெயரிடப்பட்ட அனிமேஷனை வரையறுக்கிறது.
state(): ஒவ்வொரு state-க்கும் இறுதி பாணிகளை அறிவிக்கிறது (எ.கா., open மற்றும் closed).
transition('open <=> closed'): state-களுக்கு இடையில் மாறும்போது இயங்குகிறது; animate('200ms ease-in-out') கால அளவு/எளிதாக்குதலை அமைக்கிறது.
முக்கிய குறிப்புகள்:
Components and Templates பற்றி காண்க.
அனிமேஷன்களை component-இல் declarative-ஆக வைத்து, state மூலம் toggle செய்யவும்.
கூறு அனிமேஷன்கள்
கூறில் triggers-ஐ வரையறுக்கவும்.
டெம்ப்ளேட்டுகளை எளிமையாக வைத்திருப்பதற்காக தரவுகள் மூலம் state-ஐ toggle செய்யவும்.
டெம்ப்ளேட் பயன்பாடு
<div [@openClose]="open ? 'open' : 'closed'">...</div>
toggle() { this.open = !this.open; }
முழுமையான எடுத்துக்காட்டு
import { bootstrapApplication } from '@angular/platform-browser';
import { Component } from '@angular/core';
import { trigger, state, style, transition, animate } from '@angular/animations';
import { provideAnimations } from '@angular/platform-browser/animations';
@Component({
selector: 'app-root',
standalone: true,
animations: [
trigger('openClose', [
state('open', style({ height: '80px', opacity: 1 })),
state('closed', style({ height: '0px', opacity: 0 })),
transition('open <=> closed', [animate('200ms ease-in-out')])
])
],
template: `
<h3>Animations</h3>
<button (click)="open = !open">Toggle</button>
<div [@openClose]="open ? 'open' : 'closed'" style="overflow:hidden;background:#e3f2fd;margin-top:8px">Panel</div>
`
})
class App { open = true; }
bootstrapApplication(App, { providers: [provideAnimations()] });
சிறந்த நடைமுறைகள் & செயல்திறன்
பரிந்துரைக்கப்படுகிறது
மென்மையான இயக்கத்திற்காக opacity/transform-ஐ animate செய்யவும்
தவிர்க்க
layout பண்புகள் (width/height போன்றவை) அதிக செலவாகும்
மீண்டும் பயன்படுத்தக்கூடிய அனிமேஷன்கள்
import { animation, style, animate, useAnimation } from '@angular/animations';
// மீண்டும் பயன்படுத்தக்கூடிய அனிமேஷன் வரையறை
export const fadeIn = animation([
style({ opacity: 0 }),
animate('{{time}} ease-out', style({ opacity: 1 }))
]);
// கூறு trigger-இல்:
// transition(':enter', [ useAnimation(fadeIn, { params: { time: '200ms' } }) ])
அனிமேஷன்களை வழங்குதல்
provideAnimations()-ஐப் பயன்படுத்தி app-ஆகிய முழுவதும் அனிமேஷன்களைச் செயல்படுத்தவும்.
சோதனைகளில் அல்லது நீங்கள் இயக்கத்தை முடக்க விரும்பும்போது provideNoopAnimations() ஐப் பயன்படுத்தவும்.
அனிமேஷன் வழங்குநர்கள்
import { provideAnimations, provideNoopAnimations } from '@angular/platform-browser/animations';
bootstrapApplication(App, { providers: [provideAnimations()] });
// சோதனைகள் அல்லது தவிர்ப்பு:
// bootstrapApplication(App, { providers: [provideNoopAnimations()] });
சோதனை குறிப்புகள்:
provideNoopAnimations() ஐப் பயன்படுத்தி நிலையான நேரத்திற்காக சோதனைகளில் அனிமேஷன்களை முடக்கவும்.
Feature-flag அல்லது குறைந்த-சக்தி சாதனங்களில் கனமான அனிமேஷன்களை முடக்கவும்.