elementui中导航menu高亮变色问题

在ElementUI中,解决导航菜单高亮变色问题涉及到`router-link`的使用,以及在路由配置中设置`linkActiveClass`。当页面内有不同路由跳转时,需要修改菜单为`router-link`形式,并去除`.is-active`样式,替换为`.active`或`.router-link-active`。完成这三点改造,即可实现菜单与路由的正确联动高亮。

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

elementui中导航menu高亮变色问题

<el-menu-item-group title="分组2">
          <el-menu-item index="1-3">选项3</el-menu-item>
  </el-menu-item-group>

首先看上面这段代码 当点击 选项3 则跳转 也会高亮 但是如果某些页面内部写了 诸如:

      <el-button @click="handleClick">跳转</el-button>
      handleClick() {
             this.$router.push({path: '/Rights"});
        }

两种不同的路由跳转 跳到左侧导航的页面, 左侧导航列表的对应的项 应该高亮,怎么才可以高亮
这就涉及到了 linkActiveClass: ‘active’, 在路由那index.js里面配置
还有css样式需要在导航页配置 一个.active{} 这是路由跳转的样式 或者 .router-link-active{} 这是配置的高亮,还必须干掉原有的.is-active样式(这是elementui提供的)
所以上面代码改装一下

<el-menu-item-group title="分组2">
          <el-menu-item index="/Role">
          	<router-link to:"/Role">角色</router-link>
          </el-menu-item>
            <el-menu-item index="/Rights">
          	<router-link to:"/Rights">权限</router-link>
          </el-menu-item>
  </el-menu-item-group>

代码改装完成,这就可以了,
三点: 1.改装导航成router-link这种形式
2.改装导航样式,干掉原有的.is-active,改写router-link-active的或者.active
3.记得在配置路由的那加上linkActiveClass: ‘active’,或者 linkExactActiveClass: ‘active’,

Element UI中的NavMenu导航菜单组件默认情况下是单选的,也就是说一次只能选中一个菜单项。如果你需要实现多个菜单项同时选中的功能,你将需要进行一些自定义的处理。 以下是实现Element UI中NavMenu导航菜单多选的一个方法: 1. 使用`el-menu`组件并设置`unique-opened`属性为`false`。这个属性默认为`true`,表示子菜单在点击后会关闭其他已打开的子菜单,设置为`false`后可以使得多个子菜单保持打开状态。 2. 利用`el-menu-item`的`index`属性。这个属性可以用来标识每个菜单项,可以用来跟踪每个菜单项的选中状态。 3. 使用`v-model`双向绑定数据模型到菜单选中项。由于`el-menu`组件本身不支持多选,你需要自己维护一个选中项数组,当菜单项被点击时,根据当前的选中状态决定是添加还是移除该菜单项的`index`。 下面是一个简单的示例代码: ```vue <template> <el-menu :default-active="defaultActive" class="el-menu-vertical-demo" :unique-opened="false" @select="handleSelect"> <el-menu-item index="1"> <i class="el-icon-location"></i> <span slot="title">导航一</span> </el-menu-item> <el-menu-item index="2"> <i class="el-icon-menu"></i> <span slot="title">导航二</span> </el-menu-item> <el-menu-item index="3"> <i class="el-icon-document"></i> <span slot="title">导航三</span> </el-menu-item> </el-menu> </template> <script> export default { data() { return { defaultActive: '1', // 默认选中项 selectedMenus: [] // 存储选中项的index }; }, methods: { handleSelect(key, keyPath) { const menuIndex = keyPath[0]; // 获取被选中的菜单项index const index = this.selectedMenus.indexOf(menuIndex); // 如果已经选中,则移除,否则添加 if (index > -1) { this.selectedMenus.splice(index, 1); } else { this.selectedMenus.push(menuIndex); } } } }; </script> ``` 在这段代码中,我们设置了一个名为`selectedMenus`的数组来跟踪当前选中的菜单项。每当菜单项被选中时,`handleSelect`方法会被触发,根据当前的选中状态,将菜单项的`index`添加到数组中或从数组中移除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值