我是 AngularJS 的新手,但在问这个问题之前,我已经搜索并搜索了有关如何以 Angular 方式执行此操作的答案,但结果不足。
我想要做什么: 让视图触发[延迟]的子动画直到视图[父]动画进入或略微动画进入/退出之后。
我目前已经用 ui-view 设置了所有内容,并且页面动画进出没有任何问题。但是,如果我尝试延迟子动画或使其动画长于父动画的持续时间,那么它只会跳转而不是动画。
据我所知,这是因为 ng-enter 和 ng-leave 在父级完成动画后被删除,正如设计的那样。
我创建了一个 Plunker 来展示这个:http ://plnkr.co/edit/5iOb1j0l8lFaMZfrKIFh?p=preview
动画是通过 CSS 完成的:
.ui-animate {
$enLvDur: .8s;
$delay: 1s;
&.ng-enter,
&.ng-leave {
position:absolute;
top: 100px; right: 0;
bottom: 0; left: 0;
transform: -webkit-translateX(0px);
transform: -ms-translateX(0px);
transform: translateX(0px);
}
&.ng-enter {
z-index: 2;
transform: -webkit-translateX(100%);
transform: -ms-translateX(100%);
transform: translateX(100%);
transition: -webkit-transform $enLvDur ease-in-out 0s;
transition: -ms-transform $enLvDur ease-in-out 0s;
transition: transform $enLvDur ease-in-out 0s;
.child-delay {
opacity: 0;
transition: opacity $enLvDur ease-in-out $delay;
}
}
&.ng-enter-active {
transform: -webkit-translateX(0px);
transform: -ms-translateX(0px);
transform: translateX(0px);
.child-delay {
opacity: 1;
}
}
&.ng-leave {
z-index: 1;
transform: -webkit-translateX(0px);
transform: -ms-translateX(0px);
transform: translateX(0px);
transition: -webkit-transform $enLvDur ease-in-out 0s;
transition: -ms-transform $enLvDur ease-in-out 0s;
transition: transform $enLvDur ease-in-out 0s;
}
&.ng-leave-active {
transform: -webkit-translateX(100%);
transform: -ms-translateX(100%);
transform: translateX(100%);
}
}
如果您在页面之间单击,您会看到黄色框没有动画,因为它有 1 秒的延迟,而父级有 0.8 秒的动画持续时间。(您可以在 style.scss 文件中更改它)
那么,无论视图被引入和移除时的延迟或持续时间,我将如何让视图子动画化?