feat: 路由动画(每个路由都可添加不同动画)

This commit is contained in:
xiaoxian521 2021-10-13 10:31:38 +08:00
parent a31d154806
commit b1702ed7fe
2 changed files with 32 additions and 3 deletions

View File

@ -1,17 +1,40 @@
<script setup lang="ts">
import { ref, getCurrentInstance } from "vue";
import { ref, computed, getCurrentInstance } from "vue";
import { usePermissionStoreHook } from "/@/store/modules/permission";
const keepAlive: Boolean = ref(
getCurrentInstance().appContext.config.globalProperties.$config?.KeepAlive
);
const transition = computed(() => {
return route => {
return route.meta.transition;
};
});
</script>
<template>
<section class="app-main">
<router-view>
<template #default="{ Component, route }">
<transition appear name="fade-transform" mode="out-in">
<transition
:name="
transition(route) && route.meta.transition.enterTransition
? 'pure-classes-transition'
: (transition(route) && route.meta.transition.name) ||
'fade-transform'
"
:enter-active-class="
transition(route) &&
`animate__animated ${route.meta.transition.enterTransition}`
"
:leave-active-class="
transition(route) &&
`animate__animated ${route.meta.transition.leaveTransition}`
"
mode="out-in"
appear
>
<keep-alive
v-if="keepAlive"
:include="usePermissionStoreHook().cachePageList"

View File

@ -20,7 +20,6 @@ const componentsRouter = {
meta: {
title: "message.hsvideo",
showLink: true,
keepAlive: true,
savedPosition: true
}
},
@ -32,6 +31,9 @@ const componentsRouter = {
title: "message.hsmap",
showLink: true,
keepAlive: true,
transition: {
name: "fade"
},
savedPosition: true
}
},
@ -42,6 +44,10 @@ const componentsRouter = {
meta: {
title: "message.hsdraggable",
showLink: true,
transition: {
enterTransition: "animate__zoomIn",
leaveTransition: "animate__zoomOut"
},
savedPosition: true
}
},