请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

路由动画效果切换白屏问题

不管是使用animate.css的动画效果还是使用自定义的,都会有一段事件的白屏,在动画效果切换过程中。使用了mode也没有解决问题。这个问题应该怎么解决?


使用animate.css的时候

<template>
<div id="app">
<transition name="fade"
mode="out-in"
leave-active-class="animated bounceOutRight"
enter-active-class="animated bounceInLeft">
<router-view/>
</transition>
</div>
</template>

使用自定义的css的时候,这个时候上面的class不存在

.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s ease;
}
.fade-enter,
.fade-leave-active {
opacity: 0;
}
.child-view {
position: absolute;
transition: all 0.5s cubic-bezier(0.55, 0, 0.1, 1);
}
.slide-left-enter,
.slide-right-leave-active {
opacity: 0;
-webkit-transform: translate(30px, 0);
transform: translate(30px, 0);
}
.slide-left-leave-active,
.slide-right-enter {
opacity: 0;
-webkit-transform: translate(-30px, 0);
transform: translate(-30px, 0);
}


我观察了控制台,感觉,问题可能出现在动画间隙上面

https://img1.sycdn.imooc.com//szimg/5adc461c0001bc7a09210473.jpg


在执行完leave动画以后隔了一下才指向了enter动画最终导致了白屏。这个问题的出现原因是这个吗?应该怎么解决呢?

正在回答

2回答

Dell 2018-04-22 17:46:28

是的,你把mode去掉就可以了,我不知道你想实现什么样的效果

1 回复 有任何疑惑可以回复我~
  • 提问者 李行知 #1
    希望滑动的时候显示效果流畅一点,现在用了一种方法来解决了。前面出现的问题是因为滑动的时候,translate太过了,导致动画开始的一些时候没有移动到屏幕位置导致了此处看起来没有的样子。
    还有一个问题是absolute的原因
    回复 有任何疑惑可以回复我~ 2018-04-22 19:05:40
  • 提问者 李行知 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-04-22 19:06:52
提问者 李行知 2018-04-22 19:06:33

以解决

<template>
<div id="app">
<!-- <transition name="fade"
                mode="out-in"
                leave-active-class="animated bounceOutRight"
                enter-active-class="animated bounceInLeft">
      <router-view/>
    </transition> -->
<transition name="fade"
>
<router-view class="router-view"/>
</transition>
</div>
</template>

<script>
export default {
name: 'App'
}
</script>

<style scoped lang='scss'>
#app {
height: 100%;
width: 100%;
.router-view{
position: absolute;
}
.fade-enter-active {
animation: bounce-in .3s;
}
.fade-leave-active {
animation: bounce-out .3s;
}
@keyframes bounce-in {
0% {
transform: translate3d(-100%, 0, 0);
}
25% {
transform: translate3d(-75%, 0, 0);
}
50% {
transform: translate3d(-50%, 0, 0);
}
75% {
transform: translate3d(-25%, 0, 0);
}
100% {
transform: translate3d(0px, 0, 0);
}
}
@keyframes bounce-out {
0% {
transform: translate3d(0, 0, 0);
}
25% {
transform: translate3d(25%, 0, 0);
}
50% {
transform: translate3d(50%, 0, 0);
}
75% {
transform: translate3d(75%, 0, 0);
}
100% {
transform: translate3d(100%, 0, 0);
}
}
}
</style>

原因在与translate与absolute

0 回复 有任何疑惑可以回复我~
  • Dell #1
    不错不错,加油
    回复 有任何疑惑可以回复我~ 2018-04-22 22:18:52
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号