我正在尝试为我的 Angular 项目中的 div 设置动画,以便它在屏幕上移动。div 是相对定位的(因为有多个元素),但是当我应用动画时,我将其更改为固定(因为我无法从相对状态获取确切位置,也无法发送参数)。
问题是该位置恰好在过渡时间的一半处应用于动画。因此,如果我将其设置为 5 秒,则在 2.5 秒时,div 将从相对变为固定。这会导致动画随机跳跃并在 2.5 秒后从不同的位置开始动画。这是正常行为吗?
我创建了一个(基本)plunkr 来说明我的意思:
https://plnkr.co/edit/kSnGSqZUIkMn7y3Vv2bm?p=preview
的HTML:
<div style="position:relative; top:0; left:0; width:20%; height:20%"
[@routerTransition]="animation">
<h2>Home</h2>
</div>
<button (click)="animateBox()"> Animate </button>
和动画:
return trigger('routerTransition', [
state('*', style({ })),
transition('* => move', animate(5000, style({position: 'fixed', left: "500px", top: "500px", })))
我可以通过在动画开始时应用 position: fixed 来解决这个问题,例如:
state('move', style({ position:"fixed" })),
但是,元素不会从其起始位置移动,而是从固定位置移动。
有没有办法从相对位置开始动画,然后将其动画到不同的(固定)位置,同时避免中途“跳跃”?