vue点击子菜单,父菜单高亮显示,图标切换
作者:互联网
1 <template> 2 3 <div class="sidebar"> 4 <el-menu class="sidebar-el-menu" :default-active="activeMenu" text-color="#36BFF3" active-text-color="#fff" unique-opened router @select="selectmenu" > 5 <template v-for="(item,index) in menus"> 6 <el-submenu :key="index" :index="item.icon" :id="item.path"> 7 <template slot="title"> 8 <img :src="chooseIcon(item, $route.path)"> 9 <span class="span4" slot="title">{{item.name}} </span> 10 </template> 11 <template v-for="(etem, index) in item.children"> 12 <el-menu-item :index="etem.path" :key="index" > 13 {{etem.name}} 14 </el-menu-item> 15 </template> 16 </el-submenu> 17 18 </template> 19 </el-menu> 20 </div> 21 </template> 22 23 <script> 24 export default { 25 data() { 26 return { 27 activeMenu:'/archivesInfor', 28 menus: [{ 29 name: '档案管理', 30 icon: require('../../assets/imgs/dagl.png'), // 未高亮图标 31 Aicon: require('../../assets/imgs/icon_dagl.png'), // 高亮图标 32 children: [{ 33 name: '档案信息', 34 path: '/archivesInfor' 35 }, 36 { 37 name: '档案借阅', 38 path: '/ArchivesBorrowing' 39 }, 40 { 41 name: '在借档案', 42 path: '/BorrowedArchives' 43 }, 44 { 45 name: '丢失档案', 46 path: '/LossArchives' 47 }, 48 { 49 name: '档案回收站', 50 path: '/ArchivesRecovery' 51 }] 52 }, 53 { 54 name: '档案盘点', 55 icon: require('../../assets/imgs/dapd.png'), // 未高亮图标 56 Aicon: require('../../assets/imgs/icon_dapd.png'), // 高亮图标 57 children: [{ 58 name: '盘点计划', 59 path: '/InventoryPlan' 60 }, 61 { 62 name: '盘点任务', 63 path: '/InventoryTask' 64 }, 65 { 66 name: '外借人员管理', 67 path: '/ManagementLoanPer' 68 }] 69 }, 70 ]}; 71 }, 72 methods: { 73 selectmenu (index, indexPath) { 74 this.activeMenu = index // 第一次进入页面,页面所在父菜单栏高亮 75 }, 76 chooseIcon(item, route) { 77 let n = 0 // 用于判断当前一级菜单下的二级菜单是否被点击 78 for (let i = 0; i < item.children.length; i++) { 79 if (item.children[i].path == route) { 80 n = 1 81 } 82 } 83 if (n == 1) { // 被点击了,返回高亮图标 84 return item.Aicon 85 } else { // 未被点击,返回未高亮图标 86 return item.icon 87 88 } 89 }, 90 } 91 }; 92 </script> 93 94 <style scoped> 95 .sidebar { 96 display: block; 97 } 98 .sidebar::-webkit-scrollbar { 99 width: 0; 100 } 101 .sidebar-el-menu:not(.el-menu--collapse) { 102 width: 220px; 103 height: 912px; 104 margin: 0 0 30px 30px; 105 background: url(../../assets/imgs/tabk.png) no-repeat; 106 background-size: 100% 100%; 107 } 108 .sidebar>ul { 109 height: 100%; 110 } 111 >>>.el-submenu__title { 112 height: 80px; 113 } 114 >>>.el-submenu__title>span { 115 line-height: 80px; 116 margin: 0 10px; 117 font-size: 18px; 118 font-family: Source Han Sans CN; 119 font-weight: 500; 120 } 121 >>>.el-submenu__title>span::before { 122 position: absolute; 123 left: 20px; 124 top: 80px; 125 content: ""; 126 width: 180px; 127 height: 1px; 128 background: #36BEF2; 129 opacity: 0.3; 130 } 131 /* 父菜单的小三角随着点击变化 */ 132 >>>.el-submenu__icon-arrow{ 133 background: url(../../assets/imgs/tb-l-1.png); 134 } 135 >>>.el-submenu.is-active .el-submenu__title .el-submenu__icon-arrow{ 136 background: url(../../assets/imgs/tb-l-2.png); 137 } 138 >>>.el-menu-item { 139 padding-left: 60px !important; 140 line-height: 80px; 141 height: 80px; 142 font-size: 18px; 143 } 144 >>>.el-submenu.is-active .el-submenu__title .span4 { 145 color: #fff; 146 } 147 >>>.sidebar-el-menu{ 148 padding-top:18px 149 } 150 </style>
标签:submenu,el,菜单,name,..,vue,__,path,图标 来源: https://www.cnblogs.com/wwll2020/p/15628449.html