当前位置: 首页 > article >正文

vue2+element侧边栏menu图片自定义设置

一般呢我们的图片只会设置一张,但是特殊情况下需要要我们实现选中前后是两张不同的图片,类如这样👇:
以前我都直接驳回需求这个不合理的要求,但是我觉得这也不是事,万一后面客户就是想要这个效果呢,所以呢我就小小研究了下,废话不多说上代码咯
在这里插入图片描述
一、适合选中前后图标一样,只是颜色不一样的

  1. 修改图标的颜色,我们的图片应该都是svg格式,此时,我们找到我们的svg图片对应的代码在path后面加入fill="currentColor",如下👇:(svg我是从蓝湖下载的,阿里巴巴下载的应该可以直接写color就能修改的!)
    在这里插入图片描述
    2.找到我们的svg组件,样式设置为上面我们定义的currentColor即可啦
    在这里插入图片描述

优点:我们svg图标是需要放入未选中的一种,节省了内存
缺点:我们下载svg都需要自己加下fill=“currentColor”,如果图标很多就会很费时间

二、适合选中前后展示不同图标

  1. 需要把我们未选中和选中的svg图片都放进来,如下:
    在这里插入图片描述
  2. 找到我们侧边栏设置ICON的地方,一般在\项目\src\layout\components\Sidebar\Item.vue,两个图标都放入,通过样式来决定展示哪个
if (icon) {
  if (icon.includes('el-icon')) {
    vnodes.push(<i class={[icon, 'sub-el-icon']} />)
  } else {
    const svgIcon = icon + '-active'
    vnodes.push([
      <svg-icon icon-class={svgIcon} className='side-icon side-icon-active' />,
      <svg-icon icon-class={icon} className='side-icon side-icon-un' />
    ])
  }
}

在这里插入图片描述
3.在\项目\src\styles\sidebar.scss,在这里搜下el-submenu__titleclass,加入切换样式:

.el-submenu__title {
 color: $menuColor!important;
  background-color: $menuBg!important;
  .side-icon-active{
    display: none;
  }
  .side-icon-un{
    display: inline-block;
  }
  &.is-active{
    background-color: $menuHover !important;
    color: $menuHoverColor!important;
    .side-icon-active{
      display: inline-block;
    }
    .side-icon-un{
      display: none;
    }
  }
}

在这里插入图片描述

优点:更灵活,方便选中后配置不一样的ICON
缺点:更占内存

这两种实现方式,各有利弊,大家自行选择哈,不说了,继续当牛马了🙁


http://www.kler.cn/a/500634.html

相关文章:

  • 【Apache Paimon】-- 13 -- 利用 paimon-flink-action 同步 mysql 表数据
  • 《ROS2 机器人开发 从入门道实践》 鱼香ROS2——第6章内容
  • 记一次sealos部署k8s集群之delete了第一台master如何恢复
  • 【redis初阶】浅谈分布式系统
  • piexl 手机刷装机包,以及使用面具root手机
  • [读书日志]从零开始学习Chisel 第十二篇:Scala的抽象成员(敏捷硬件开发语言Chisel与数字系统设计)
  • 攻防靶场(34):隐蔽的计划任务提权 Funbox1
  • 青少年编程与数学 02-006 前端开发框架VUE 20课题、工具链
  • 39_Lua选择结构语句
  • Pathview包:整合表达谱数据可视化KEGG通路
  • 深入学习 Python 量化编程
  • Redis的各种操作
  • 【SpringBoot】@Value 没有注入预期的值
  • GPU算力平台|在GPU算力平台部署Linly-Talker 数字人对话应用教程
  • WPF基础(1.1):ComboBox的使用
  • NestJS基础教程
  • 【论文+源码】一个基于Vue.js的MOBA类游戏攻略分享平台
  • 数组(Array)和链表(Linked List)
  • docker-compose安装canal并利用rabbitmq同步多个mysql数据
  • Oracle概述
  • [离线数仓] 总结二、Hive数仓分层开发
  • Android车机DIY开发之学习篇(二)编译Kernel以正点原子为例