You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.4 KiB
Vue

<template>
<div class="w-test">
<div>
<div>
<router-link to="/">系统首页</router-link>
<router-link v-for="(path,index) in list" :to="'./'+path" :key="index">{{ path }}</router-link>
</div>
</div>
<div>
<div>
<router-view />
</div>
</div>
</div>
</template>
<script setup>
import { ref } from "vue";
const list = ref([]);
let files = import.meta.glob("@/views/test/*.vue");
for (let fileName in files) {
let moduleName = fileName.replace(/^.*\/(\w+)\.vue$/, "$1");
// if (moduleName == "index") {
// continue;
// }
list.value.push(moduleName);
}
</script>
<style lang="scss" scoped>
.w-test {
width: 100vw;
height: 100vh;
display: grid;
grid-template-columns: 10rem 1fr;
gap: 2rem;
& > div {
position: relative;
& > div {
position: absolute;
width: 100%;
height: 100%;
}
&:last-child > div {
overflow: auto;
}
&:first-child {
background-image: linear-gradient(to right, #fff 70%, #0001);
& > div {
padding: 1rem 0;
& > a {
display: flex;
font-size: 0.9rem;
position: relative;
height: 2rem;
align-items: center;
justify-content: center;
transition: all 0.5s;
margin: 0.3rem 0;
color: var(--el-color-primary-dark-2);
border: solid 0.1rem #0000;
&:not(.router-link-exact-active):hover {
background-color: #fff;
color: var(--el-color-primary-dark-3);
border: solid 0.1rem var(--el-color-primary-dark-3);
transform: scale(0.95);
}
&::after {
content: "";
position: absolute;
box-sizing: border-box;
right: 0rem;
width: 1rem;
height: 2rem;
border: solid 1rem #0000;
border-right-width: 0;
border-left-color: var(--c, #0000);
transition: all 0.5s;
}
&.router-link-exact-active {
--c: var(--el-color-primary-dark-2);
background-color: var(--c);
color: #fff;
transform: scale(1.05);
&:hover {
--c: var(--el-color-primary-dark-3);
}
&::after {
right: -1rem;
}
}
}
}
}
}
}
</style>