当前位置:首页 > VUE

vue如何实现菜单高亮

2026-01-21 22:08:16VUE

实现菜单高亮的方法

动态绑定class

通过v-bind:class或简写:class动态绑定高亮样式,结合当前路由或状态判断是否激活。例如:

<template>
  <div>
    <router-link 
      :to="/home" 
      :class="{ 'active': $route.path === '/home' }"
    >首页</router-link>
  </div>
</template>

<style>
.active {
  color: red;
  font-weight: bold;
}
</style>

使用vue-router的exact属性

对于嵌套路由或复杂路径匹配,exact可精确匹配路由路径:

<router-link to="/about" exact-active-class="active">关于</router-link>

配置全局默认高亮类名:

vue如何实现菜单高亮

const router = new VueRouter({
  linkExactActiveClass: 'active'
})

监听路由变化

在非<router-link>的自定义菜单中,通过watch监听路由变化:

export default {
  data() {
    return {
      activePath: ''
    }
  },
  watch: {
    '$route.path'(newVal) {
      this.activePath = newVal;
    }
  }
}

模板中通过activePath判断:

vue如何实现菜单高亮

<div :class="{ 'active': activePath === '/contact' }">联系我们</div>

使用计算属性

对于多级菜单或复杂逻辑,推荐使用计算属性动态返回高亮状态:

computed: {
  isHomeActive() {
    return this.$route.path === '/home' || this.$route.matched.some(route => route.path === '/home');
  }
}

第三方库辅助

使用vue-router-active-path等库简化高亮逻辑:

import { isActive } from 'vue-router-active-path';
export default {
  methods: {
    checkActive(path) {
      return isActive(this.$route, path);
    }
  }
}

注意事项

  • 嵌套路由需使用$route.matched而非直接比较path
  • 动态路由参数需使用paramsquery进行匹配
  • 移动端需考虑触摸反馈与高亮状态的视觉区分

分享给朋友:

相关文章

vue实现菜单调用

vue实现菜单调用

Vue 实现动态菜单的常见方法 基于路由配置生成菜单 Vue Router 的路由配置可以天然转化为菜单结构,适合权限与路由绑定的系统: // router/index.js const route…

如何实现vue表格联动

如何实现vue表格联动

实现Vue表格联动的方法 使用Vue的响应式数据和计算属性 通过Vue的响应式数据特性,可以轻松实现表格之间的联动。定义一个共享的数据源,并在多个表格组件中使用这个数据源。利用计算属性对数据进行处理,…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…

vue实现左右菜单联动实现

vue实现左右菜单联动实现

Vue 实现左右菜单联动 使用事件总线通信 在 Vue 中可以通过事件总线实现左右菜单的通信。创建一个中央事件总线实例,让左右菜单通过事件监听和触发实现联动。 // eventBus.js impo…

vue如何实现tap

vue如何实现tap

实现Tap事件的方法 在Vue中实现类似移动端的tap事件(轻触)可以通过以下几种方式完成。原生移动端浏览器通常通过touchstart和touchend事件组合模拟tap,而Vue中可以封装自定义指…

css制作下拉菜单

css制作下拉菜单

CSS 制作下拉菜单的方法 使用纯 CSS 可以创建简单的下拉菜单效果,主要依赖 :hover 伪类和 display 属性控制子菜单的显示与隐藏。 基础 HTML 结构 <div c…