app.vue
- 布局结构为上下结构,使用两个
RouterView
组件,结合RouterView
的命名视图来实现 - 为两个
RouterView
组件设置不同的类名,在app中设置结构样式
<script setup lang="ts">
import { RouterView } from 'vue-router'
</script>
<template>
<transition>
<RouterView class="box" />
</transition>
<RouterView class="footer" name="footer" />
</template>
<style lang="scss">
html,
body,
#app {
height: 100%;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 100%;
max-width: 768px;
min-width: 350px; /*no*/
margin: 0 auto;
color: #2c3e50;
display: flex;
flex-direction: column;
.box {
flex: 1;
background: #f6f6f6;
overflow: auto;
}
.footer {
height: 100px;
}
.v-enter-active {
animation: move 1s;
}
@keyframes move {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0%);
}
}
}
</style>
- 查看命名视图的实现,以一个route为例
// 不定义name属性,默认为name = "default"
<RouterView class="box" />
// 添加了name属性,对应展示路由对象的components属性中相同key名对应的组件,
<RouterView class="footer" name="footer" />
{
path: '/',
name: 'home',
components: {
default: HomeView,
footer: CommonFooter
}
},