el-menu 菜单组件的优化

本文探讨了在Vue.js中优化el-menu组件的策略,包括放弃router模式以避免路由冲突,确保index的唯一性,处理index绑定错误,解决菜单需二次点击才显示选中样式的问题,调整default-active属性以支持子路由选中,以及处理后退时的路由选中状态。通过这些优化,提高了前端菜单组件的稳定性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话少说先上代码

菜单组件代码(202203)

<el-menu @select="redirectRoute" :collapse="isCollapse" :default-active="currentMenu" background-color="transparent" :unique-opened="true">
  <xxx-navMenu :navMenus="menuData"></xxx-navMenu>
</el-menu>
<template>
  <div class="navMenu">
    <label v-for="navMenu in navMenus" :key="navMenu.menuId">
      <!-- 子菜单 -->
      <el-menu-item id="menuitem" v-if="navMenu&&navMenu.type===1&&navMenu.childs===null" :index="navMenu.sn + '/' + navMenu.url">
        <div>
          <i :class="navMenu.icon"></i>
          <span class="span-ellipsis" slot="title" :title="n
### 自定义 el-menu 组件样式以添加菜单栏下划线效果 为了实现 `el-menu` 的菜单项下方显示一条下划线的效果,可以通过 CSS 和 JavaScript 结合的方式完成。以下是具体方法: #### 方法一:通过自定义类名和 CSS 实现 可以利用 `el-menu-item` 或者 `el-submenu__title` 提供的钩子来设置特定样式的激活状态。 ```css /* 添加到全局或者局部样式文件 */ .el-menu--horizontal .el-menu-item.is-active { border-bottom: 2px solid blue; /* 设置下划线颜色和宽度 */ } ``` 如果需要更灵活的控制,比如只针对某些菜单项生效,则可以通过为这些菜单项绑定额外的类名并单独设置样式[^1]。 #### 方法二:使用伪元素 :after 创建下划线 这种方法允许更加精细地调整下划线的位置、长度以及动画过渡等属性。 ```html <template> <el-menu mode="horizontal"> <el-menu-item index="1" class="custom-underlined">首页</el-menu-item> <!-- 更多菜单 --> </el-menu> </template> <style scoped> .custom-underlined.is-active::after { content: ''; display: block; width: 80%; /* 下划线占整个菜单项的比例 */ height: 2px; /* 下划线高度 */ background-color: red; /* 颜色可自行修改 */ margin-top: 5px; /* 调整距离底部的距离 */ } </style> ``` 上述代码片段展示了如何通过伪元素创建动态变化的视觉反馈[^2]。 #### 注意事项 对于 Vue3 用户需要注意的是,在迁移到 **Element Plus** 后部分 API 可能有所改变;因此建议查阅最新官方文档确认兼容性问题。另外当项目采用按需加载而非整体导入方式时记得安装对应依赖如 babel-plugin-component 来处理样式自动注入的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值