Compare commits

...

2 Commits

2 changed files with 53 additions and 12 deletions

View File

@ -14,27 +14,68 @@ const mode = computed(() => {
return color.value
})
//
const router = useRouter()
const route = useRoute()
const slideDirection = ref('slide-left')
//
const routeHistory = ref([])
router.beforeEach((to, from) => {
//
routeHistory.value.push(from.path)
//
if (routeHistory.value.includes(to.path)) {
slideDirection.value = 'slide-right'
//
const index = routeHistory.value.indexOf(to.path)
routeHistory.value = routeHistory.value.slice(0, index)
} else {
slideDirection.value = 'slide-left'
}
})
//
provide('slideDirection', slideDirection)
</script>
<template>
<VanConfigProvider :theme="mode" >
<VanConfigProvider :theme="mode">
<NuxtLoadingIndicator
color="repeating-linear-gradient(to right,var(--c-primary) 0%,var(--c-primary-active) 100%)" />
<NuxtLayout>
<NuxtPage/>
<NuxtPage :transition="{
name: slideDirection
}" />
</NuxtLayout>
</VanConfigProvider>
</template>
<style>
.page-enter-active,
.page-leave-active {
transition: all 0.2s;
.slide-left-enter-active,
.slide-left-leave-active,
.slide-right-enter-active,
.slide-right-leave-active {
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: absolute;
width: 100%;
}
.page-enter-from,
.page-leave-to {
opacity: 0;
filter: blur(1rem);
.slide-left-enter-from {
transform: translateX(100%);
}
.slide-left-leave-to {
transform: translateX(-100%);
}
.slide-right-enter-from {
transform: translateX(-100%);
}
.slide-right-leave-to {
transform: translateX(100%);
}
</style>

View File

@ -90,9 +90,9 @@ export default defineNuxtConfig({
},
app: {
pageTransition: {
name: 'page',
mode: 'out-in',
layoutTransition: {
name: 'layout',
mode: 'out-in'
},
head: {
viewport: 'width=device-width,initial-scale=1,viewport-fit=cover',