gpt4 book ai didi

angular - 使父动画等待子动画在 Angular 中完成

转载 作者:太空狗 更新时间:2023-10-29 18:29:00 26 4
gpt4 key购买 nike

我有一个占据屏幕的全屏导航。我希望在覆盖层(父级)进入后显示的菜单(子级)的内容。我已经开始工作了。然而,休假过渡是个问题。

我无法让 child 在 parent 动画之前消失甚至完全消失。取而代之的是,父级动画首先出现,尽管我无法确认子级动画是否正在运行。

退出动画的开始将父级的宽度和高度设置为 View 的 300%。这是产品团队要求的效果所必需的。

HTML:

<div *ngIf="menuOpen" @fullscreenNav class="fullscreen-nav" >
<div class="menu-content" @showHideOnLeave >
</div>
</div>

组件 TS(仅限动画):

animations: [
trigger('animateChildren', [
transition(':enter, :leave', [
query('@showHideOnLeave', animateChild())
])
]),
trigger('fullscreenNav', [
transition(':enter', [
style({
height: '20vh',
width: '50vw',
borderRadius: '100%',
borderTopRightRadius: '0',
top: '-10vh',
right: '-10vw'
}),
animate('400ms ease-in', style({
height: '300%',
width: '300%',
borderRadius: '0',
top: '0',
right: '0'
})),
]),
transition(':leave', [
style({
height: '100%',
width: '100%',
borderRadius: '100%',
borderTopRightRadius: '0',
overflow: 'hidden',
top: '0vh',
right: '0vw'
}),
animate('500ms 100ms', style({
offset: 1,
height: '15vh',
width: '20vw',
borderRadius: '100%',
borderTopRightRadius: '0',
top: '-10vh',
right: '-10vw'
})),
]),
]),

最佳答案

所以我想到了这个。诀窍是在 transition() 内部的 sequence() 内部使用 group() 函数。下面是我的解决方案(第一个触发函数删除了 :leave 过渡选择器,并且在 fullscreenNav 的 :leave 过渡中,我添加了组和序列函数来启动子动画):

animations: [
trigger('animateChildren', [
transition(':enter', [
query('@showHideOnLeave', animateChild())
])
]),
trigger('fullscreenNav', [
transition(':enter', [
style({
height: '20vh',
width: '50vw',
borderRadius: '100%',
borderTopRightRadius: '0',
top: '-10vh',
right: '-10vw'
}),
animate('400ms ease-in', style({
height: '300%',
width: '300%',
borderRadius: '0',
top: '0',
right: '0'
})),
]),
transition(':leave', [
sequence([
group([
query('@showHideOnLeave', animateChild({ duration: '200ms' })),
]),
style({
height: '300%',
width: '300%',
borderRadius: '100%',
borderTopRightRadius: '0',
overflow: 'hidden',
top: '0vh',
right: '0vw'
}),
animate('300ms 100ms', style({
offset: 1,
height: '15vh',
width: '20vw',
borderRadius: '100%',
borderTopRightRadius: '0',
top: '-10vh',
right: '-10vw'
})),
])
]),
]),
trigger('showHideOnLeave', [
transition('void => *', [
style({
opacity: 0
}),
animate('200ms 400ms', style({
opacity: 1
}))
]),
transition('* => void', [
style({
opacity: 1
}),
animate('100ms', style({
opacity: 0
}))
])
]),

]

关于angular - 使父动画等待子动画在 Angular 中完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51501849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com