Angular Animations

Angular-இல் அனிமேஷன்களைக் கற்றுக்கொள்ளுங்கள்

Angular Animations

Angular-இல் அனிமேஷன்கள் declarative முறையில் உள்ளன: component-இல் trigger/transition/animate-ஐ வரையறுத்து, தரவுகளிலிருந்து state-ஐ toggle செய்யவும்; app-wide-ஆக provideAnimations() மூலம் செயல்படுத்தவும்.

அனிமேஷன் அத்தியாவசியங்கள்

trigger: டெம்ப்ளேட்டில் bind செய்யப்பட்ட ஒரு பெயரிடப்பட்ட அனிமேஷனை வரையறுக்கவும் (எ.கா., [@openClose]).

transition: எப்போது இயங்கும் என்பதை அறிவிக்கவும் (state மாற்றங்கள் அல்லது wildcards போன்ற * <=> *).

animate: கால அளவு/எளிதாக்குதல் மற்றும் style() மூலம் இறுதி பாணிகளை அமைக்கவும்.

அமைப்பு:

அடிப்படை அனிமேஷன் அமைப்பு

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 போன்றவை) அதிக செலவாகும்

State-driven: அனிமேஷன்களை declarative-ஆக வைத்து, கூறு state மூலம் இயக்கவும்
தவிர்க்க: கட்டாயமான DOM அழைப்புகள்
அணுகல்: prefers-reduced-motion-ஐ மரியாதை செய்து, பொருத்தமான போது குறுகிய அல்லது முடக்கப்பட்ட அனிமேஷன்கள்

மீண்டும் பயன்படுத்தக்கூடிய அனிமேஷன்கள்

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 அல்லது குறைந்த-சக்தி சாதனங்களில் கனமான அனிமேஷன்களை முடக்கவும்.

கற்றல் பயிற்சி

Angular-இல் அனிமேஷன்களை முழு பயன்பாடாக செயல்படுத்துவதற்கு எந்த செயல்பாட்டைப் பயன்படுத்துவீர்கள்?

provideAnimations()
✓ சரி! provideAnimations() அனிமேஷன்களை முழு Angular பயன்பாடாக செயல்படுத்தப் பயன்படுகிறது
provideHttpClient()
✗ தவறு! provideHttpClient() HTTP கிளையண்ட் செயல்பாட்டிற்காகப் பயன்படுகிறது, அனிமேஷன்களுக்கு அல்ல
provideRouter()
✗ தவறு! provideRouter() ரூட்டிங் செயல்பாட்டிற்காகப் பயன்படுகிறது, அனிமேஷன்களுக்கு அல்ல
அடுத்தது