我在使用element plus的menu(侧边栏)组件的过程中遇到了一些问题,就是menu编写样式和路由跳转,下面给大家分享以下,我是怎么解决的。
1.页面效果
我要实现的网站布局是这样的:
侧边栏折叠以后的效果:
网站的布局我是用element plus官网提供的布局方式:
2.样式
下面是对应的style设置:
这里我用了tailwind css。
3.路由
4.路由对应的页面
1.HomeView.vue
2.AboutView.vu
3.LayoutView.vue
<script setup>
import { Expand, Fold, HomeFilled, InfoFilled } from "@element-plus/icons-vue";
import {ref} from "vue";const isSidebarOpen = ref(false)</script><template><div class="common-layout"><el-container><el-aside :class="{'is-sidebar-open':isSidebarOpen}" width="200px" class="bg-gray-800 h-screen"><!--最上面logo--><div class="-ml-2 h-16 flex items-center justify-center"><img class="object-cover h-14 w-14" src="@/assets/images/A%20拷贝.png" alt="logo"><h1 v-show="!isSidebarOpen" class="-ml-2 text-2xl text-white font-bold">Blog</h1></div><el-menu:collapse="isSidebarOpen":collapse-transition="false"router:default-active="$route.path"background-color="#1f2937"text-color="#fff"style="border: none"><el-menu-item index="/home" route="/home"><el-icon><HomeFilled /></el-icon><span class="font-semibold">Home</span></el-menu-item><el-menu-item index="/about" route="/about"><el-icon><InfoFilled /></el-icon><span class="font-semibold">About</span></el-menu-item></el-menu></el-aside><el-container><el-header class="h-16 shadow-md z-10 flex items-center justify-between"><div><button @click="isSidebarOpen = !isSidebarOpen"><el-icon><component :is="isSidebarOpen ? Expand : Fold"></component></el-icon></button></div><div class="flex items-center space-x-4"><h1 class="font-medium">AkbarSmile</h1><img class="w-10 h-10 rounded-full" src="@/assets/images/Mofei1-cut.jpg" alt="avatar"></div></el-header><el-main class="bg-slate-100"><router-view></router-view></el-main></el-container></el-container></div>
</template><style scoped>
aside {@apply transition-all duration-300;
}
.is-sidebar-open {@apply w-16;
}.el-menu {@apply w-full
}
.el-menu--collapse .el-menu-item {@apply p-0 m-0 flex items-center justify-center;
}
.el-menu-item.is-active {@apply bg-purple-600 text-white w-full ;
}
</style>
可能很多同学没有使用过tailwind css,但是用普通的css代码,也可以实现同样的效果。
大家自己打开多研究研究,其实能找到找技巧的话,element plus非常好用。