mirror of
https://github.com/Rakantor/personal-portfolio.git
synced 2025-12-17 11:36:32 +01:00
Add page transitions
This commit is contained in:
@@ -47,3 +47,26 @@ p a {
|
||||
color: rgb(var(--v-theme-primary));
|
||||
}
|
||||
}
|
||||
|
||||
.slide-left-enter-active,
|
||||
.slide-left-leave-active,
|
||||
.slide-right-enter-active,
|
||||
.slide-right-leave-active {
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.slide-left-enter-from {
|
||||
opacity: 0;
|
||||
transform: translate(50px, 0);
|
||||
}
|
||||
.slide-left-leave-to {
|
||||
opacity: 0;
|
||||
transform: translate(-50px, 0);
|
||||
}
|
||||
.slide-right-enter-from {
|
||||
opacity: 0;
|
||||
transform: translate(-50px, 0);
|
||||
}
|
||||
.slide-right-leave-to {
|
||||
opacity: 0;
|
||||
transform: translate(50px, 0);
|
||||
}
|
||||
8
middleware/transition.global.ts
Normal file
8
middleware/transition.global.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
export default defineNuxtRouteMiddleware((to, from) => {
|
||||
if (typeof to.meta.pageTransition === 'object' && typeof from.meta.pageTransition === 'object') {
|
||||
if (typeof to.meta.id !== 'number' || typeof from.meta.id !== 'number') return
|
||||
|
||||
const transition = to.meta.id > from.meta.id ? 'slide-left' : 'slide-right'
|
||||
to.meta.pageTransition.name = from.meta.pageTransition.name = transition
|
||||
}
|
||||
})
|
||||
@@ -59,6 +59,14 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
definePageMeta({
|
||||
id: 2,
|
||||
pageTransition: {
|
||||
name: 'slide',
|
||||
mode: 'out-in'
|
||||
}
|
||||
})
|
||||
|
||||
import _groupBy from 'lodash-es/groupBy'
|
||||
|
||||
export default {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<template>
|
||||
<div>
|
||||
<v-card class="mb-2">
|
||||
<v-card-item>
|
||||
<v-card-title>Offenlegung nach § 25 Mediengesetz</v-card-title>
|
||||
@@ -960,11 +961,17 @@
|
||||
</p>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
definePageMeta({
|
||||
id: 4,
|
||||
pageTransition: false
|
||||
})
|
||||
|
||||
export default {
|
||||
name: 'ImprintPage',
|
||||
name: 'ImprintPage'
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -31,6 +31,14 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
definePageMeta({
|
||||
id: 1,
|
||||
pageTransition: {
|
||||
name: 'slide',
|
||||
mode: 'out-in'
|
||||
}
|
||||
})
|
||||
|
||||
export default {
|
||||
name: 'IndexPage'
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<template>
|
||||
<div>
|
||||
<ImageCarousel ref="imageCarousel" />
|
||||
<v-row>
|
||||
<v-col cols="12">
|
||||
@@ -81,9 +82,18 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
definePageMeta({
|
||||
id: 3,
|
||||
pageTransition: {
|
||||
name: 'slide',
|
||||
mode: 'out-in'
|
||||
}
|
||||
})
|
||||
|
||||
import { badgen } from 'badgen'
|
||||
import { siAndroid, siAmazonaws, siMicrosoftazure, siFirebase, siGithub,
|
||||
siHeroku, siCoffeescript, siYoutubegaming, siMysql, siNuxtdotjs, siPhp,
|
||||
|
||||
Reference in New Issue
Block a user