动画 ui-router 状态变化:div 在动画结束时短暂地重新出现
Animating a ui-router state change: div reappears briefly when animation ends
下面是现象的一个小插曲:http://plnkr.co/edit/xLfXyDcwKtHPM7Sdhygf?p=preview
忽略丑陋的布局;单击 "log in" 时问题很明显 - FadeOutDown 动画触发,div 尽职尽责地向页面底部移动,但就在动画结束时,它会短暂地重新出现在其原始位置。
我对整个 webdev 游戏还很陌生,所以我不确定这个问题是否与 ngAnimate、ui-router 或我使用的方式有关 ng-enter/ng-leave在 CSS。我显然希望 div 在消失后保持消失。
我的方法是通过 ui-sref 触发转换,然后使用这种 CSS
动画转换
[ui-view].ng-leave #first-div {
animation: fadeOutDown 1s;
}
其他 div 以此类推。它在技术上有效,但在动画期结束时有这个奇怪的人工制品。
有什么想法吗?谢谢!
你可以使用它:
[ui-view].ng-enter, [ui-view].ng-leave {
position: absolute;
left: 0;
right: 0;
-webkit-transition:all .5s ease-in-out;
-moz-transition:all .5s ease-in-out;
-o-transition:all .5s ease-in-out;
transition:all .5s ease-in-out;
}
[ui-view].ng-enter {
opacity: 0;
-webkit-transform:scale3d(0.5, 0.5, 0.5);
-moz-transform:scale3d(0.5, 0.5, 0.5);
transform:scale3d(0.5, 0.5, 0.5);
}
[ui-view].ng-enter-active {
opacity: 1;
-webkit-transform:scale3d(1, 1, 1);
-moz-transform:scale3d(1, 1, 1);
transform:scale3d(1, 1, 1);
}
[ui-view].ng-leave {
opacity: 1;
/*padding-left: 0px;*/
-webkit-transform:translate3d(0, 0, 0);
-moz-transform:translate3d(0, 0, 0);
transform:translate3d(0, 0, 0);
}
[ui-view].ng-leave-active {
opacity: 0;
/*padding-left: 100px;*/
-webkit-transform:translate3d(100px, 0, 0);
-moz-transform:translate3d(100px, 0, 0);
transform:translate3d(100px, 0, 0);
}
http://plnkr.co/edit/i9wHL9dNbV55EKZr06dn?p=preview
你可以直接添加。
文档:https://docs.angularjs.org/api/ngAnimate#css-based-animations
[ui-view].ng-leave-active {
opacity: 0;
}
下面是现象的一个小插曲:http://plnkr.co/edit/xLfXyDcwKtHPM7Sdhygf?p=preview
忽略丑陋的布局;单击 "log in" 时问题很明显 - FadeOutDown 动画触发,div 尽职尽责地向页面底部移动,但就在动画结束时,它会短暂地重新出现在其原始位置。
我对整个 webdev 游戏还很陌生,所以我不确定这个问题是否与 ngAnimate、ui-router 或我使用的方式有关 ng-enter/ng-leave在 CSS。我显然希望 div 在消失后保持消失。
我的方法是通过 ui-sref 触发转换,然后使用这种 CSS
动画转换[ui-view].ng-leave #first-div {
animation: fadeOutDown 1s;
}
其他 div 以此类推。它在技术上有效,但在动画期结束时有这个奇怪的人工制品。
有什么想法吗?谢谢!
你可以使用它:
[ui-view].ng-enter, [ui-view].ng-leave {
position: absolute;
left: 0;
right: 0;
-webkit-transition:all .5s ease-in-out;
-moz-transition:all .5s ease-in-out;
-o-transition:all .5s ease-in-out;
transition:all .5s ease-in-out;
}
[ui-view].ng-enter {
opacity: 0;
-webkit-transform:scale3d(0.5, 0.5, 0.5);
-moz-transform:scale3d(0.5, 0.5, 0.5);
transform:scale3d(0.5, 0.5, 0.5);
}
[ui-view].ng-enter-active {
opacity: 1;
-webkit-transform:scale3d(1, 1, 1);
-moz-transform:scale3d(1, 1, 1);
transform:scale3d(1, 1, 1);
}
[ui-view].ng-leave {
opacity: 1;
/*padding-left: 0px;*/
-webkit-transform:translate3d(0, 0, 0);
-moz-transform:translate3d(0, 0, 0);
transform:translate3d(0, 0, 0);
}
[ui-view].ng-leave-active {
opacity: 0;
/*padding-left: 100px;*/
-webkit-transform:translate3d(100px, 0, 0);
-moz-transform:translate3d(100px, 0, 0);
transform:translate3d(100px, 0, 0);
}
http://plnkr.co/edit/i9wHL9dNbV55EKZr06dn?p=preview
你可以直接添加。
文档:https://docs.angularjs.org/api/ngAnimate#css-based-animations
[ui-view].ng-leave-active {
opacity: 0;
}