rak*_*ete 6 angular2-animation angular
我想用 Angular2 动画显示和隐藏我的模态组件。目前这是我的代码:
animations: [
trigger('modalState', [
state('true', style({
display: 'block',
opacity: '1'
})),
state('false', style({
display: 'none',
opacity: '0'
})),
transition('* => *', animate('200ms ease'))
])
]
Run Code Online (Sandbox Code Playgroud)
问题:目前显示块在 200ms 后设置。所以你看不到动画不透明度。显示应在事件后直接设置。
这该怎么做?
小智 6
您可以将动画挂钩用于离散 CSS 属性,例如display. 因此,您的动画将仅包含不透明度:
animations: [
trigger('modalState', [
state('true', style({
opacity: '1'
})),
state('false', style({
opacity: '0'
})),
transition('* => *', animate('200ms ease'))
])
]
Run Code Online (Sandbox Code Playgroud)
然后在模板中,您可以使用动画开始/结束挂钩来切换display:
<div
[@modalState]="isShown"
(@modalState.start)="$event.element.style.display = 'block'"
(@modalState.done)="$event.element.style.display = ($event.toState ? 'block' : 'none')">
...
</div>
Run Code Online (Sandbox Code Playgroud)
假设isShown是布尔值。
您可以对同一元素使用 2 个不同的触发器。
第一个将处理“不透明度”,第二个将处理“显示”属性。因此,请使用持续时间和延迟时间来获得您需要的内容。
animations: [
trigger('modalStateOpacity', [
state('true', style({ opacity: '1' })),
state('false', style({ opacity: '0' })),
transition('0 <=> 1', animate('200ms ease'))
]),
trigger('modalStateDisplay', [
state('true', style({ display: 'block' })),
state('false', style({ display: 'none' })),
transition('0 => 1', animate('0ms ease')),
transition('1 => 0', animate('0ms 200ms ease'))
])
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7718 次 |
| 最近记录: |