当前位置:首页 > 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 属性,可自动匹配精确路由。

vue实现导航栏高亮

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

计算属性判断

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

vue实现导航栏高亮

<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实现图册

Vue实现图册功能 在Vue中实现图册功能通常涉及图片展示、切换、缩放等交互效果。以下是常见的实现方法和关键代码示例: 基础图册组件结构 使用Vue单文件组件构建基础结构: <templat…

vue实现slot

vue实现slot

Vue 中的 Slot 实现方法 Vue 的 slot 是一种内容分发机制,允许父组件向子组件插入内容。以下是几种常见的 Slot 实现方式: 默认 Slot 子组件通过 <slot>…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局引…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

mvvm实现vue

mvvm实现vue

MVVM 模式在 Vue 中的实现 MVVM(Model-View-ViewModel)是一种前端架构模式,Vue 的设计灵感来源于此。以下是 MVVM 在 Vue 中的核心实现方式: 数据绑定(M…

vue实现插件

vue实现插件

Vue 插件实现方法 Vue 插件通常用于为 Vue 应用添加全局功能或共享功能。以下是实现 Vue 插件的核心步骤: 插件基本结构 Vue 插件需要暴露一个 install 方法,该方法接收 Vu…