Css 角度4平滑动画
我正在尝试在Angular 4中创建一个主页,使用一些动画制作不同的卡片,如统计、图表等。 对于图表卡,我制作了一个图标按钮来切换div,使其更大(如全屏)。动画代码当前的工作方式如下:Css 角度4平滑动画,css,angular,typescript,animation,angular-animations,Css,Angular,Typescript,Animation,Angular Animations,我正在尝试在Angular 4中创建一个主页,使用一些动画制作不同的卡片,如统计、图表等。 对于图表卡,我制作了一个图标按钮来切换div,使其更大(如全屏)。动画代码当前的工作方式如下: state('small', style({position: 'relative', width: '50%'})), state('large', style({ transform: 'translateY(-150px)', position: 'absolute', width
state('small', style({position: 'relative', width: '50%'})),
state('large', style({
transform: 'translateY(-150px)',
position: 'absolute',
width: '100%'
})),
transition('small => large', animate('600ms ease', keyframes([
style({position: 'absolute', width: '100%', offset: 0}),
style({transform: 'translateY(-150px)', offset: 1.0}),
]))),
transition('large => small', animate('600ms ease', keyframes([
style({transform: 'translateY(-150px)', offset: 0}),
style({width: '50%', right: 0, offset: 1.0}),
])))
由于第一步(small=>lage)的宽度未设置动画,而反向动画的平移也未设置动画,因此这无法按预期工作。
我想做一些“更流畅”的事情,但我已经努力了好几天
这是我做的一个例子,告诉你我做了什么以及我尝试过的不同的事情(评论)(首先是plunkr不要评判我x)
谢谢你的帮助 我认为,通过不使用关键帧并切换到使用“缓进-缓出”变换,您将能够获得所需的动画效果。如果要通过对状态和图形化触发器的这些更改来编辑plunkr:
animations: [
trigger('panelAnimation', [
state('in', style({transform: 'translateX(0)'})),
transition('void => *', animate('600ms ease-in', keyframes([
style({opacity: 0, offset: 0}),
style({opacity: 1, offset: 1.0})
])))
]),
trigger('graphAnimation', [
state('small', style({
position: 'absolute',
right: 0,
width: '50%'
transform: 'translateY(0px)'
})),
state('large', style({
transform: 'translateY(-150px)',
position: 'absolute',
right: 0,
width: '100%'
})),
transition('small => large', animate('600ms 0.2ms ease-in-out')),
transition('large => small', animate('600ms 0.2ms ease-in-out'))
])
]
这会给你带来你想要的效果。或者,您可以考虑使用组来允许独立的动画计时。我认为您可以通过不使用关键帧并切换到使用“缓进-缓出”变换来获得所需的动画效果。如果要通过对状态和图形化触发器的这些更改来编辑plunkr:
animations: [
trigger('panelAnimation', [
state('in', style({transform: 'translateX(0)'})),
transition('void => *', animate('600ms ease-in', keyframes([
style({opacity: 0, offset: 0}),
style({opacity: 1, offset: 1.0})
])))
]),
trigger('graphAnimation', [
state('small', style({
position: 'absolute',
right: 0,
width: '50%'
transform: 'translateY(0px)'
})),
state('large', style({
transform: 'translateY(-150px)',
position: 'absolute',
right: 0,
width: '100%'
})),
transition('small => large', animate('600ms 0.2ms ease-in-out')),
transition('large => small', animate('600ms 0.2ms ease-in-out'))
])
]
这会给你带来你想要的效果。或者,您可以考虑使用组来允许独立的动画计时。谢谢,这正是我想要的!=)谢谢,这正是我想要的!=)