当前位置:首页 > VUE

vue导航栏实现

2026-01-08 13:56:12VUE

Vue 导航栏实现方法

基础路由配置

安装 vue-router 并配置路由表,在 router/index.js 中定义路径与组件的映射关系:

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'

const routes = [
  { path: '/', name: 'Home', component: Home },
  { path: '/about', name: 'About', component: () => import('../views/About.vue') }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

导航组件实现

创建 NavBar.vue 组件,使用 <router-link> 实现导航跳转:

<template>
  <nav>
    <router-link to="/">首页</router-link>
    <router-link to="/about">关于</router-link>
  </nav>
</template>

<style scoped>
nav {
  display: flex;
  gap: 1rem;
  padding: 1rem;
}
.router-link-active {
  font-weight: bold;
}
</style>

动态高亮当前页

通过 v-bind 绑定动态类名,结合路由的 exact-active-class 属性:

vue导航栏实现

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

响应式导航栏

添加移动端菜单切换功能,利用 Vue 的响应式数据:

<script setup>
import { ref } from 'vue'
const isMenuOpen = ref(false)
</script>

<template>
  <button @click="isMenuOpen = !isMenuOpen">菜单</button>
  <nav :class="{ 'show-menu': isMenuOpen }">
    <!-- 导航链接 -->
  </nav>
</template>

<style>
@media (max-width: 768px) {
  nav {
    display: none;
  }
  .show-menu {
    display: flex;
    flex-direction: column;
  }
}
</style>

权限控制导航项

结合 Vuex 或 Pinia 实现权限过滤:

vue导航栏实现

<script setup>
import { useAuthStore } from '@/stores/auth'
const auth = useAuthStore()
</script>

<template>
  <router-link v-if="auth.isAdmin" to="/admin">管理</router-link>
</template>

嵌套路由导航

处理多级菜单时,在路由配置中添加 children 字段:

{
  path: '/products',
  component: ProductsLayout,
  children: [
    { path: '', component: ProductList },
    { path: ':id', component: ProductDetail }
  ]
}

滚动行为控制

在路由配置中添加滚动行为控制,提升用户体验:

const router = createRouter({
  scrollBehavior(to) {
    if (to.hash) {
      return { el: to.hash }
    }
    return { top: 0 }
  }
})

标签: vue
分享给朋友:

相关文章

vue实现录播播放

vue实现录播播放

Vue 实现录播播放 使用 video.js 实现 安装 video.js 和相关的 Vue 适配器: npm install video.js @videojs-player/vue 在 Vue…

vue查看更多怎么实现

vue查看更多怎么实现

实现 Vue 的“查看更多”功能 数据截取与显示控制 通过 v-if 或 v-show 控制内容的显示与隐藏。初始状态下只显示部分内容,点击“查看更多”后展开完整内容。 <template&…

vue实现防抖节流

vue实现防抖节流

Vue 中实现防抖(Debounce) 防抖的核心是延迟执行函数,在连续触发时取消前一次的调用,只执行最后一次。适用于输入框搜索、窗口大小调整等场景。 方法1:使用 Lodash 的 _.debo…

vue实现按卡片轮播

vue实现按卡片轮播

实现卡片轮播的基本思路 在Vue中实现卡片轮播可以通过结合v-for指令和动态样式绑定完成。核心是维护一个当前显示卡片的索引,通过CSS过渡效果实现平滑切换。 基础实现步骤 模板部分 使用v-fo…

vue实现无线滚动列表

vue实现无线滚动列表

无限滚动列表的实现方法 在Vue中实现无限滚动列表通常结合监听滚动事件和动态加载数据。以下是几种常见方法: 使用自定义指令 创建自定义指令v-infinite-scroll监听滚动事件: Vu…

vue实现列表显示

vue实现列表显示

Vue 实现列表显示的方法 在 Vue 中实现列表显示通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式。 基本列表渲染 通过 v-for 指令遍历数组,动态生成…