2023-01-21 06:38:03
Angular动画通过触发器(Trigger)、状态(State)和过渡(Transition)实现动态效果,支持复杂场景如列表动画、模态框淡入淡出等。以下是核心要点和实战示例:
1. 基础动画结构通过输入属性动态控制动画参数(如持续时间):
@Input() duration = 1000;animations: [ trigger('flyInOut', [ transition('* => *', animate(`{{duration}}ms`)) ])]动画事件监听捕获动画生命周期事件(如开始/结束):
@HostListener('@flyInOut.start', ['$event'])onStart(event) { console.log('Started:', event); }组动画与查询同时运行多个动画(如平移+淡入):
group([ query('@flyInOut', animateChild()), query('@fade', animateChild())])4. 实战示例列表项动画实现新增/删除项的动态效果:
trigger('listItem', [ state('void', style({ opacity: 0, transform: 'scale(0.5)' })), transition(':enter', animate('300ms')), // 入场动画 transition(':leave', animate('300ms')) // 离场动画])<li *ngFor="let item of items" [@listItem]>{{ item.text }}</li>模态框淡入淡出trigger('modal', [ state('in', style({ opacity: 1 })), state('out', style({ opacity: 0 })), transition('* => *', animate('200ms'))])5. 关键注意事项通过合理组合触发器、状态和过渡,Angular动画能高效实现复杂的交互效果,显著提升用户体验。