当前位置:首页 > VUE

vue实现跳转高亮

2026-02-11 10:30:13VUE

Vue 实现路由跳转高亮

在 Vue 中实现路由跳转高亮通常有两种常见方式:通过 router-link 的激活类或手动监听路由变化动态设置样式。

使用 router-link 的激活类

Vue Router 的 router-link 组件会自动为当前激活的路由链接添加特定类名(默认 router-link-activerouter-link-exact-active),可直接利用这些类名设置高亮样式。

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

<style>
.nav-link {
  color: gray;
}
.nav-link.router-link-active {
  color: red; /* 非精确匹配 */
}
.nav-link.router-link-exact-active {
  color: blue; /* 精确匹配 */
}
</style>

动态绑定 class 或 style

通过计算属性或方法,根据当前路由动态绑定高亮样式。

<template>
  <div 
    :class="{ active: $route.path === '/home' }"
    @click="$router.push('/home')"
  >Home</div>
  <div 
    :class="{ active: $route.path === '/about' }"
    @click="$router.push('/about')"
  >About</div>
</template>

<style>
.active {
  background-color: yellow;
}
</style>

使用 Vuex 或 Pinia 管理状态

对于复杂场景(如多层嵌套路由),可通过状态管理工具存储当前高亮项。

// Pinia 示例
import { defineStore } from 'pinia';
export const useNavStore = defineStore('nav', {
  state: () => ({
    activePath: '/'
  })
});
<template>
  <div 
    :class="{ active: activePath === '/home' }"
    @click="setActive('/home')"
  >Home</div>
</template>

<script setup>
import { useNavStore } from '@/stores/nav';
import { storeToRefs } from 'pinia';
const navStore = useNavStore();
const { activePath } = storeToRefs(navStore);
const setActive = (path) => {
  navStore.activePath = path;
};
</script>

嵌套路由的高亮处理

嵌套路由需结合 route.matched 判断父级路径是否匹配。

computed: {
  isActive() {
    return this.$route.matched.some(record => record.path === this.to);
  }
}

注意事项

  • 精确匹配使用 router-link-exact-active,模糊匹配使用 router-link-active
  • 动态绑定时注意响应式数据更新,避免直接修改 $route 对象。
  • 对于非 router-link 元素,需手动监听路由变化(如使用 watchonBeforeRouteUpdate)。

vue实现跳转高亮

标签: 跳转vue
分享给朋友:

相关文章

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、…

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…

vue实现轮询

vue实现轮询

实现轮询的基本方法 在Vue中实现轮询可以通过setInterval或setTimeout配合递归调用完成。轮询通常用于定期向服务器请求数据更新。 使用setInterval的简单示例: data…

vue实现选区

vue实现选区

Vue 实现选区的基本方法 在Vue中实现选区功能通常涉及DOM操作和事件处理。以下是几种常见的方法: 使用原生JavaScript的Selection API 通过window.getSel…

vue实现主页

vue实现主页

Vue 实现主页的基本步骤 创建一个 Vue 主页通常涉及以下几个关键步骤,从项目初始化到页面布局和功能实现。 初始化 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI…

vue 实现挂载

vue 实现挂载

Vue 实现挂载的基本方法 在 Vue 中,挂载是将 Vue 实例与 DOM 元素关联的过程。通过挂载,Vue 可以管理 DOM 并实现数据绑定和响应式更新。 创建 Vue 实例并挂载 con…