我想在 Angular 中的组件内制作 svg 动画,但我发现很难在动画中指定步骤。
我想为以下步骤设置动画:
1) 圆圈以不透明度 0 开始离屏
2) 圆圈从顶部移动到屏幕上,随着它的移动变得更加不透明,以不透明度 1 结束
3) 圆圈向右移动,在屏幕外结束
我什至无法让它在屏幕外开始,但我似乎也无法控制动画何时触发。我希望它在页面加载后触发 1s。
HTML:
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>
TS:
import { Component, OnInit, HostBinding } from '@angular/core';
import { style, animate, animation, animateChild, useAnimation, group, sequence, transition, state, trigger, query, stagger } from '@angular/animations';
@Component({
selector: 'app-svg-viewer',
templateUrl: './svg-viewer.component.html',
styleUrls: ['./svg-viewer.component.css'],
animations: [
trigger('myAwesomeAnimation', [
transition(':enter', group([
query('circle', stagger('0ms', [
animate('200ms 250ms ease-in', style({ opacity: 0, transform: 'translateY(-400%)' }))
])),
])),
])
],
})
export class SvgViewerComponent implements OnInit {
@HostBinding('@myAwesomeAnimation')
public animateProfile = true;
constructor() { }
ngOnInit() {
}
}
我的开发环境是标准的 angular-cli 构建,在 app.module.ts 中添加了以下内容:
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
并在 app.module.ts 的 @NgModule 中:
BrowserModule,
BrowserAnimationsModule,