今天我在写vue项目的时候,想要给我的页面跳转加一个过度动画,让其看起来更加优美一些,当我使用完之后,发现在路由跳转的时候出现了页面的空白,即使当我点击回退按钮的时候,也不能加载上一个页面,经过我在网上的查找,我发现了问题的所在并将其解决,特此记录
首先给大家看一下我的代码(app.vue)
<template>
<router-view v-slot="{ Component }">
<transition name="scale" mode="out-in">
<component :is="Component" />
</transition>
</router-view>
</template>
/* 进入过渡的起始状态 */
.scale-enter {
transform: scale(0.8);
opacity: 0;
}
/* 进入过渡的活动状态 */
.scale-enter-active {
transform: scale(1);
opacity: 1;
transition: all 0.3s ease;
}
/* 离开过渡的起始状态 */
.scale-leave {
transform: scale(1);
opacity: 1;
}
/* 离开过渡的活动状态 */
.scale-leave-active {
transform: scale(0.8);
opacity: 0;
transition: all 0.3s ease;
}
代码的本身呢,是没有大的问题,是可以正常执行的,但是为什么我的这里出现了页面的跳转之后会出现白页面的问题呢,是因为我的单文件组件(.vue
文件)里,没有保证模板部分只有一个根元素(不包括template标签)
当然可能有的小伙伴是因为别的原因,可能我没遇到,大家也可以发在评论区我们一起相互讨论学习
错误示范:
<template>
<!-- 这里有多个根元素,会导致问题 -->
<div>第一个元素</div>
<div>第二个元素</div>
</template>
正确示范:
<template>
<!-- 用一个根元素包裹所有内容 -->
<div>
<div>第一个元素</div>
<div>第二个元素</div>
</div>
</template>
当然了,这个的原因呢是因为我的坏习惯导致出现的问题,这里呢,我给同样和我有一样不好习惯的小伙伴一个建议啊,例如我们创建了一个homePage.vue文件页面的时候,第一件事情就是可以在template标签里面写上一个<div class="homePage"></div>的根标签,我相信不止这样的事情,肯定还有很多其他的情况下因为根标签有多个而出现页面bug的,而像这种小细节问题出现的bug很多时候反而不容易发现,可能找了好久也没发现,所以,为了避免一些不必要的bug,大家可以提前规范一下这些
同时这里和大家分享一下,过渡动画的而一篇博客,大家可以直接去copy