当前位置:首页 > VUE

vue实现导航栏高亮

2026-02-24 09:04:34VUE

Vue 实现导航栏高亮的方法

动态绑定 class

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

<template>
  <nav>
    <router-link 
      to="/home" 
      :class="{ 'active': $route.path === '/home' }"
    >Home</router-link>
    <router-link 
      to="/about" 
      :class="{ 'active': $route.path === '/about' }"
    >About</router-link>
  </nav>
</template>

<style>
.active {
  color: #42b983;
  font-weight: bold;
}
</style>

使用 Vue Router 的 exact-active-class

Vue Router 内置 exact-active-class 属性,可自动匹配精确路由。

<router-link 
  to="/home" 
  exact-active-class="active"
>Home</router-link>

计算属性判断

通过计算属性返回高亮状态,适用于复杂条件。

<template>
  <nav>
    <a @click="navigate('/home')" :class="{ active: isActive('/home') }">Home</a>
    <a @click="navigate('/about')" :class="{ active: isActive('/about') }">About</a>
  </nav>
</template>

<script>
export default {
  methods: {
    navigate(path) {
      this.$router.push(path);
    },
    isActive(path) {
      return this.$route.path === path;
    }
  }
};
</script>

使用 CSS 伪类

结合 Vue Router 的 router-link 和 CSS 伪类实现高亮。

<router-link to="/home" class="nav-link">Home</router-link>
<router-link to="/about" class="nav-link">About</router-link>

<style>
.router-link-exact-active.nav-link {
  color: #42b983;
  border-bottom: 2px solid #42b983;
}
</style>

嵌套路由高亮

处理嵌套路由时,使用 $route.matched 检查路径层级。

<template>
  <a :class="{ active: isActive('/products') }">Products</a>
</template>

<script>
export default {
  methods: {
    isActive(path) {
      return this.$route.matched.some(route => route.path === path);
    }
  }
};
</script>

注意事项

  • 动态绑定 class 时,确保样式优先级足够覆盖默认样式。
  • 使用 exact-active-class 时,若需模糊匹配(如子路由),改用 active-class
  • 对于非路由导航,可通过状态管理(如 Vuex)存储当前激活项。

vue实现导航栏高亮

标签: vue高亮
分享给朋友:

相关文章

vue 实现toast

vue 实现toast

vue 实现 toast 的方法 在 Vue 中实现 Toast 提示功能可以通过多种方式,以下是几种常见的实现方法: 使用第三方库 Vue 生态中有许多成熟的 Toast 库,例如 vue-to…

vue tag实现

vue tag实现

Vue 标签实现方法 在 Vue 中实现标签功能可以通过多种方式完成,常见场景包括动态标签生成、标签输入框、标签管理等。以下是几种典型实现方案: 动态标签列表渲染 使用 v-for 指令渲染标签…

vue实现tablegrid

vue实现tablegrid

Vue 实现 TableGrid 的方法 使用 Element UI 的 Table 组件 Element UI 提供了强大的 Table 组件,可以快速实现表格布局。安装 Element UI 后,…

vue怎么实现

vue怎么实现

Vue 实现方法 Vue 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v-m…

vue实现markdown

vue实现markdown

Vue 实现 Markdown 编辑器 在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或自定义解析器完成。以下是两种常见方法: 使用第三方库(如 marked 或 markdown…

vue实现pie

vue实现pie

Vue 实现饼图 在 Vue 中实现饼图通常可以通过第三方图表库(如 ECharts、Chart.js 或 Highcharts)来完成。以下是使用 ECharts 和 Chart.js 的两种常见方…