Skip to content

Commit 16a4228

Browse files
committed
feat:#1 页面路由与跳转
1 parent acc3673 commit 16a4228

File tree

6 files changed

+69
-17
lines changed

6 files changed

+69
-17
lines changed

app.vue

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<template>
2-
<NuxtLayout>
3-
<NuxtPage/>
4-
</NuxtLayout>
2+
<Transition name="page" mode="out-in">
3+
<NuxtLayout>
4+
<div :key="$route.fullPath">
5+
<NuxtPage/>
6+
</div>
7+
</NuxtLayout>
8+
</Transition>
59
</template>
610

711
<script lang="ts" setup>

assets/scss/index.scss

+32
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,36 @@ html.dark {
1313
a {
1414
font-weight: 400;
1515
color: var(--el-color-primary);
16+
}
17+
18+
/*
19+
页面动画
20+
https://github.com/nuxt/framework/issues/3141#issuecomment-1212899838
21+
*/
22+
.page-enter-active {
23+
transition: all 0.1s ease-out;
24+
}
25+
26+
.page-leave-active {
27+
transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
28+
}
29+
30+
.page-enter-from,
31+
.page-leave-to {
32+
transform: translateY(20px);
33+
opacity: 0;
34+
}
35+
36+
.layout-enter-active {
37+
transition: all 0.1s ease-out;
38+
}
39+
40+
.layout-leave-active {
41+
transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
42+
}
43+
44+
.layout-enter-from,
45+
.layout-leave-to {
46+
transform: translateY(-20px);
47+
opacity: 0;
1648
}

components/default/Footer.vue

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
<template>
22
<footer>
3-
footer
3+
footer .
4+
<NuxtLink href="/setting">Setting</NuxtLink>
45
</footer>
56
</template>
67

78
<script lang="ts">
9+
810
export default {
911
name: "Footer"
1012
}
13+
1114
</script>
1215

1316
<style scoped>

components/default/Header.vue

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,31 @@
11
<template>
22
<header>
3+
<el-page-header :icon="ArrowLeft" title="返回" @click="onBack" v-if="$route.fullPath!='/'">
4+
<template #content>
5+
<div class="flex items-center">
6+
<span class="text-large font-600 mr-3"> {{ $route.fullPath }} </span>
7+
</div>
8+
</template>
9+
</el-page-header>
10+
311
<Navbar/>
412
</header>
513
</template>
614

7-
<script lang="ts">
15+
<script lang="ts" setup>
816
import Navbar from "~/components/default/Navbar.vue";
17+
import {ElPageHeader} from "element-plus";
18+
import {ArrowLeft} from '@element-plus/icons-vue'
19+
20+
const router = useRouter();
21+
const onBack = () => {
22+
router.go(-1)
23+
}
24+
</script>
925

26+
<script lang="ts">
1027
export default {
1128
name: "Header",
12-
components: {Navbar}
1329
}
1430
</script>
1531

layouts/default.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<div>
33
<Header/>
4-
<slot/>
4+
<slot />
55
<Footer/>
66
</div>
77
</template>

pages/ChangeTheme.vue pages/setting.vue

+7-10
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,8 @@
4040
</template>
4141

4242
<script lang="ts" setup>
43-
import {ElForm, ElFormItem, ElButton, ElSelect, ElOption} from "element-plus";
44-
import {ref} from 'vue'
45-
import {ElSpace, ElDivider} from 'element-plus'
43+
import {ElButton, ElDivider, ElForm, ElFormItem, ElOption, ElSelect, ElSpace} from "element-plus";
44+
import {h, ref} from 'vue'
4645
4746
const value = ref('default')
4847
const options = [
@@ -63,9 +62,10 @@ const langOptions = [
6362
},
6463
]
6564
66-
definePageMeta({
67-
layout: false,
68-
});
65+
// 使用这一行可以不使用通用布局
66+
// definePageMeta({
67+
// layout: false,
68+
// });
6969
7070
const route = useRoute()
7171
@@ -78,12 +78,9 @@ const spacer = h(ElDivider, {direction: 'vertical'})
7878

7979
<script lang="ts">
8080
export default {
81-
name: "ChangeTheme"
81+
name: "seting"
8282
}
8383
</script>
8484

8585
<style scoped>
86-
.setting {
87-
padding: 10px;
88-
}
8986
</style>

0 commit comments

Comments
 (0)