【发布时间】:2018-05-28 02:32:53
【问题描述】:
我有 2 条路线:
export const appRoutes: Route[] = [
{
path: 'page1',
component: Page1Component,
data: {
animation: 'page1'
}
},
{
path: 'page2',
component: Page2Component,
data: {
animation: 'page2'
}
},
];
我的路线动画:
export const routeStateTrigger = trigger('routeState', [
transition('* => *', [
query(':enter', [
style({ position: 'absolute', opacity: 0 })
], { optional: true }),
query(':leave', [
animate(300, style({ opacity: 0 }))
], { optional: true }),
query(':enter', [
style({ position: 'relative', opacity: 0 }),
animate(300, style({ display: 'visible', opacity: 1 }))
], { optional: true })
])
]);
我的路由器插座:
<div [@routeState]="getAnimationData(routerOutlet)">
<router-outlet #routerOutlet="outlet"></router-outlet>
</div>
和 getAnimationData 方法:
getAnimationData(routerOutlet: RouterOutlet) {
const routeData = routerOutlet.activatedRouteData['animation'];
return routeData ? routeData : 'rootPage';
}
这很好,除了页面转换发生在两个步骤中(顺序):
- page1 消失(300 毫秒)
- 然后第 2 页出现(300 毫秒)
我想要的是 page1 的消失应该在 page2 出现的同时发生,转换应该同时发生。
问题:
我想防止对 page1 或 page2 的内容进行临时调整大小。
说明:
当使用 group() 制作动画以使它们同时出现-消失并将位置临时设置为“绝对”时,内容会调整大小(因为内容的宽度为 100%,并且当容器大小发生变化时,内容也会发生变化) .
我试过玩 z-index :
position: 'relative', 'z-index': 1
但这不起作用,它仍然在离开页面下方堆叠进入页面。
有什么好的解决办法吗?
【问题讨论】:
标签: css angular angular-animations