我正在尝试为我的页面设置动画,但遇到以下问题:
我的页面上有内容 div,还有一个在内容上方打开另一个 div 的按钮。我希望那个 div 淡入淡出并滑入,并且 div 也可以向下/向上滑动。我为上面的 div 创建了我想要的动画,在点击时打开,但不明白如何处理内容 div,示例代码如下:
<div class="wrapper">
<button (click)="animated = !animated"></button>
<div *ngIf="animated" [@slideInOutAnimation] class="animated-div">
THIS DIV IS ANIMATED</div>
<div class="content">THIS IS CONTENT DIV</div>
</div>
TYPESCRIPT:
animations: [
trigger('slideInOutAnimation', [
state('*', style({
})),
transition(':enter', [
style({
transform: 'translateY(-10%)',
opacity: 0
}),
animate('.5s ease-in-out', style({
transform: 'translateY(0)',
opacity: 1
}))
]),
transition(':leave', [
animate('.5s ease-in-out', style({
transform: 'translateY(-10%)',
opacity: 0
}))
])
])
]
我应该创建一些其他触发器来移动我的内容 div 与动画吗?
原文由 Nemanja Grabovac 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,创建一个文件,您将在其中定义动画并导出它们。只是为了让你的 app.component.ts 更清楚
在下面的示例中,我使用了从 0px(隐藏时)到 500px 的 div 的最大高度,但您可以根据需要进行更改。
此动画使用状态(进出),当我们单击按钮时将切换状态,这将运行动画。
动画.ts
然后在您的 app.component 中,我们导入动画并创建将切换动画状态的方法。
app.component.ts
这是您的 app.component.html 的样子:
slideInOut 指的是animations.ts中定义的动画触发器
这是我创建的 StackBlitz 示例: https ://stackblitz.com/edit/angular-muvaqu
旁注:如果发生错误并要求您添加 BrowserAnimationsModule ,只需将其导入您的 app.module.ts :