这可能是有关Angular动画的问题,可以尝试使用以下代码片段:
import { Component, ViewChild, Renderer2, AnimationPlayer, ElementRef } from '@angular/core';
import { trigger, state, style, animate, transition, AnimationEvent } from '@angular/animations';
@Component({
selector: 'app-example',
template: `
动画示例
`,
animations: [
trigger('myTrigger', [
state('start', style({ opacity: 1 })),
state('end', style({ opacity: 0 })),
transition('start => end', [
animate(2000, style({ opacity: 0 }))
]),
transition('end => start', [
animate(2000, style({ opacity: 1 }))
])
])
]
})
export class ExampleComponent {
@ViewChild('myContent') myContent: ElementRef;
player: AnimationPlayer;
constructor(private renderer: Renderer2) { }
ngAfterViewInit() {
this.renderer.listen(this.myContent.nativeElement, 'animationstart', (event: AnimationEvent) => {
console.log('Animation Start Event: ', event);
// Do something when the animation starts
});
this.renderer.listen(this.myContent.nativeElement, 'animationend', (event: AnimationEvent) => {
console.log('Animation End Event: ', event);
// Do something when the animation ends
});
this.player = this.renderer
.createRenderer(this.myContent.nativeElement, true)
.animate(this.myContent.nativeElement, {
animation: 'myTrigger',
keyframes: [
{ offset: 0, transform: 'scale(1)' },
{ offset: 0.5, transform: 'scale(1.2)' },
{ offset: 1, transform: 'scale(1)' }
],
duration: 1500,
delay: 0,
easing: 'ease-in-out',
fill: 'both'
});
this.player.play();
}
}
通过在视图初始化之后使用Renderer2监听来自动画元素的“animationstart”和“animationend”事件,您可以确保您的动画逻辑能够正确地处理这些事件。 此外,代码片段中的添加一个动画player并通过调用play()方法启动它,以确保CSS动画触发。