赞
踩
目录
1.路径:src>components>modules>icon.vue
2.main.js引入,注意与vue2.0有所区别
- //全局使用方法 vue2.0:Vue.component('el-icons', icons)
- //图标
- import icons from '@/components/modules/icon.vue'
- app.component('el-icons', icons) //使用时候元素的名称,进行注册的组件名
3.icon.vue
- <template>
- <el-icon :size="size" :color="color">
- <component :is="name"></component>
- </el-icon>
- </template>
-
- <script>
- import { ref, defineComponent } from "vue";
- import * as Icons from '@element-plus/icons-vue'
- // import * as ElementPlusIconsVue from '@element-plus/icons-vue'
- export default defineComponent({
- components: Icons,
- name: "ElIcons",
- props: {
- name: {
- type: String,
- required: true,
- },
- size: {
- type: String,
- default: "",
- },
- color: {
- type: String,
- default: "",
- },
- },
- });
- </script>
4.使用
<el-icons :name="item.icon" />
1.源文件
- <template>
- <div class="sidebar">
- <el-menu class="sidebar-el-menu" :default-active="onRoutes" :collapse="collapse" text-color="#333333"
- active-text-color="#20a0ff" unique-opened router>
- <template v-for="item in items">
- <template v-if="item.subs">
- <el-submenu :index="item.index" :key="item.index">
- <template #title>
- <el-icons :name="item.icon" />
- <span>{{ item.title }}</span>
- </template>
- <template v-for="subItem in item.subs" :key="subItem.index">
- <el-submenu v-if="subItem.subs" :index="subItem.index">
- <template #title>{{ subItem.title }}</template>
- <el-menu-item v-for="(threeItem, i) in subItem.subs" :key="i" :index="threeItem.index">
- {{ threeItem.title }}</el-menu-item>
- </el-submenu>
- <el-menu-item v-else :index="subItem.index">{{ subItem.title }}
- </el-menu-item>
- </template>
- </el-submenu>
- </template>
- <template v-else>
- <el-menu-item :index="item.index" :key="item.index">
- <el-icons :name="item.icon" />
- <template #title>{{ item.title }}</template>
- </el-menu-item>
- </template>
- </template>
- </el-menu>
- </div>
- </template>
-
- <script lang="ts" setup>
- import {
- computed,
- watch
- } from "vue";
- import {
- useStore
- } from "vuex";
- import {
- useRoute
- } from "vue-router";
-
- const items = [{
- icon: "HomeFilled",
- index: "/role",
- title: "角色管理",
- }, {
- icon: "Menu",
- index: "/menu",
- title: "菜单管理",
- },
- {
- icon: "Tools",
- index: "/jurisdiction",
- title: "权限管理",
- },
- ] as any[];
-
- const route = useRoute();
-
- const onRoutes = computed(() => {
- return route.path;
- });
-
- const store = useStore();
- const collapse = computed(() => store.state.collapse);
- </script>
-
- <style scoped>
- .sidebar {
- display: block;
- position: absolute;
- left: 0;
- top: 70px;
- bottom: 0;
- overflow-y: scroll;
- }
-
- .sidebar::-webkit-scrollbar {
- width: 0;
- }
-
- .sidebar-el-menu:not(.el-menu--collapse) {
- width: 250px;
- }
-
- .sidebar>ul {
- height: 100%;
- }
- </style>
修改样式:创建elementUi.css
main.js引入
elementUi.css:
- /* 导航菜单 */
- /* 移动背景色 */
- .el-menu-item:hover {
- background-color: #CBE6F5 !important;
- color: #20a0ff!important;
- }
- .el-menu-item:hover i {
- color: #20a0ff!important;
- }
- .el-menu-item i {
- color: #909399;
- margin-right: 5px;
- width: 24px;
- }
- /* 子菜单 */
- .el-submenu .el-menu-item {
- background-color: #F9F9F9;
- color: #666666!important;
- }
- .el-menu-item.is-active{
- background-color: #CBE6F5;
- color: #20a0ff!important;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。