Angular animatsiyalar
Angular animatsiyalari deklarativdir: komponentda trigger / transition / animate ni aniqlang va ma’lumotlardan holatini almashtiring; provideAnimations() bilan ilova bo‘ylab yoqing.
Muhim animatsiyalar
- trigger: Shablonga biriktirilgan nomli animatsiyani aniqlang (masalan,
[@openClose]). - o‘tish: Qachon ishlayotganini e’lon qiling (holat o‘zgarishi yoki
* <=> *kabi joker belgilar). - jonlantirish:
style()orqali davomiylik/engillashtirish va yakuniy uslublarni o‘rnating.
Sozlash; o‘rnatish:
- O‘rnatish:
npm install @angular/animations - Yoqish:
@angular/platform-browser/animationsdanprovideAnimations()ilovasi bo‘ylab animatsiyalarni taqdim eting. - O‘chirish: harakatni o‘chirish uchun
provideNoopAnimations()dan foydalaning (masalan, testlarda).
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 {}
Misol tushuntirildi
- trigger('openClose'):
[@openClose]bilan shablonda ishlatiladigan nomli animatsiyani belgilaydi. - state(): Har bir holat uchun yakuniy uslublarni e’lon qiladi (masalan,
openvaclosed). - o‘tish('ochiq <=> yopiq'): Holatlar o‘rtasida almashinishda ishlaydi;
animate('200ms ease-in-out')davomiylik/engillashtirishni belgilaydi.
Eslatmalar:
- Aloqador: componentlar va shablonlarga qarang.
- Komponentda animatsiyalarni deklarativ holda saqlang va holat orqali almashtiring.
component animatsiyalari
Komponentda triggerlarni aniqlang.
Shablonlarni sodda saqlash uchun ma’lumotlar orqali holatni o‘zgartiring.
<div [@openClose]="open ? 'open' : 'closed'">...</div>
toggle() { this.open = !this.open; }
Misol
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()] });
<app-root></app-root>
Misol tushuntirildi
- [@openClose]: Elementni
openClosetriggeriga bog‘laydi va component holatini'open'yoki'closed'sifatida ishlatadi. - O‘tish: tugmani bosish
open <=> closedo‘tishni ishga tushirish uchunopenni aylantiradi. - provideAnimations(): O‘tishlarni bajarish uchun dastur bo‘ylab Angular animatsiyalarni yoqadi.
Umumiylik: Yumshoqroq harakat qilish uchun opacity / transform animatsiyasidan foydalaning; tartib xususiyatlari (masalan, kenglik/balandlik) qimmatroq bo‘lishi mumkin.
Holatga asoslangan: animatsiyalarni deklarativ holda saqlang va component holatiga qarab boshqariladi.
Imperativ DOM chaqiruvlaridan saqlaning.
Mavjudlik: Agar kerak bo‘lsa, qisqaroq yoki o‘chirilgan animatsiyalar bilan prefers-reduced-motion ni hurmat qiling.
import { animation, style, animate, useAnimation } from '@angular/animations';
// Reusable animation definition
export const fadeIn = animation([
style({ opacity: 0 }),
animate('{{time}} ease-out', style({ opacity: 1 }))
]);
// In component trigger:
// transition(':enter', [ useAnimation(fadeIn, { params: { time: '200ms' } }) ])
Animatsiyalarni taqdim etish
Ilovada animatsiyalarni yoqish uchun provideAnimations() dan foydalaning.
Sinovlarda yoki harakatni o‘chirishni xohlaganingizda provideNoopAnimations() dan foydalaning.
import { provideAnimations, provideNoopAnimations } from '@angular/platform-browser/animations';
bootstrapApplication(App, { providers: [provideAnimations()] });
// Tests or opt-out:
// bootstrapApplication(App, { providers: [provideNoopAnimations()] });
Eslatmalar:
- Sinov:
provideNoopAnimations()yordamida barqaror vaqtni aniqlash uchun testlarda animatsiyalarni o‘chirib qo‘ying. - Shartli yoqish: kam quvvatli qurilmalarda og‘ir animatsiyalarni belgilang yoki o‘chiring.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
