angular - 角度动画:首先淡出,然后淡入
问题描述
我有以下 HTML
<div @fadeInOut *ngIf="state">State is true</div>
<div @fadeInOut *ngIf="!state">State is false</div>
<button (click)="state = !state">Toggle</button>
我想为:leave和:enter过渡设置动画。我会说非常微不足道
我可以用下面的动画做到这一点
trigger("fadeInOut", [
transition(":enter", [
style({ opacity: 0 }),
animate(1000, style({ opacity: 1 }))
]),
transition(":leave", [animate(1000, style({ opacity: 0 }))])
])
但问题是,一旦过渡开始,两个元素都是可见的。我想要的是首先:leave消失,然后:enter出现。实现这一目标的正确方法是什么?
解决方案
:enter
您可以通过为动画添加等于动画长度的:leave
延迟来实现它
trigger("fadeInOut", [
transition(":enter", [
style({ opacity: 0 }),
animate("1000ms 1000ms", style({ opacity: 1 }))
]),
transition(":leave", [animate(1000, style({ opacity: 0 }))])
])
推荐阅读
- reactjs - Redux Toolkit 使用Mutation hook 在多个组件之间共享数据
- apache-kafka - Kafka Consumer Groups 对 3 节点 Kafka 集群的限制
- java - 围绕夏令时转换解析 ZonedDateTime 失败
- android-studio - Android Studio 的设计视图和 gradle 不起作用
- python - 使用 dt = CachedAccessor("dt", CombinedDatetimelikeProperties) 时,异常字符串索引必须是整数
- python - 如何使用 plotly 中的旭日图来显示每个分支的平均值而不是总和/总数?
- javascript - 将值传递给其他参数后,值变得未定义
- php - Laravel Pusher/Echo 在 Laravel 中捕获 ping 超时或 websocket 断开连接
- html - 如何使我的网页上的元素位于其容器的相对两侧,而不是彼此相邻?
- git - 如何获取我贡献的开源项目的最新代码