在html中
<template>
<!-- v-slot="{ Component, route }"中Component和route是固定的参数无需更改 -->
<router-view v-slot="{ Component, route }">
<!-- name是过度动画名称,mode是动画进入方式 -->
<!-- 这里是组件缓存时执行 -->
<transition name="slide-fade" mode="out-in">
:max="5"是缓存最大限制
<keep-alive :max="5">
<!-- v-if="写判断条件"是判断哪些页面需要缓存,:key="写唯一的值,如id"是为了不让页面出现错乱 -->
<component :is="Component" v-if="route.meta.keepAlive" :key="route.fullPath" />
</keep-alive>
</transition>
<!-- 这里是组件不缓存时执行 -->
<transition name="slide-fade" mode="out-in">
<keep-alive :max='5'>
<component :is="Component" v-if="!route.meta.keepAlive" :key="route.fullPath" />
</keep-alive>
</transition>
</router-view>
</template>
说明:v-if="route.meta.keepAlive"和 :key="route.fullPath"中的条件是自己在路由中给的,可以自己定义条件,判断条件一般在路由文件中编写
如
![](https://img-blog.csdnimg.cn/img_convert/41585cdba58b6a65443375ba8304c92b.png)
在css中
<style type="text/css">
/*
进入和离开动画可以使用不同
持续时间和速度曲线。
*/
/* 进入时的过渡效果 */
.slide-fade-enter-active {
transition: all 0.3s ease-out;
}
/* 离开时的过渡效果 */
.slide-fade-leave-active {
transition: all 0.1s cubic-bezier(1, 0.5, 0.8, 1);
}
/* 从什么位置进入和从什么位置出去 */
.slide-fade-enter-from,.slide-fade-leave-to {
transform: translateX(20px);
opacity: 0;
}
</style>
说明:一定要给过渡样式不然没有过渡效果,选择器名称不需要更改