当前位置:首页 > VUE

vue 实现导航栏

2026-01-19 06:00:37VUE

Vue 实现导航栏的方法

使用 Vue Router 实现基础导航栏

安装 Vue Router 并创建路由配置:

npm install vue-router

创建路由配置文件(如 router/index.js):

vue 实现导航栏

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

const routes = [
  { path: '/', name: 'Home', component: Home },
  { path: '/about', name: 'About', component: About }
]

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

export default router

在 App.vue 中实现导航栏组件:

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

<style scoped>
nav {
  display: flex;
  gap: 1rem;
  padding: 1rem;
  background: #f0f0f0;
}

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

响应式导航栏实现

添加响应式功能,在小屏幕设备上显示汉堡菜单:

vue 实现导航栏

<template>
  <nav>
    <div class="nav-brand">Logo</div>
    <button @click="toggleMenu" class="hamburger">☰</button>
    <div :class="['nav-links', { 'active': menuOpen }]">
      <router-link to="/">Home</router-link>
      <router-link to="/about">About</router-link>
    </div>
  </nav>
</template>

<script>
export default {
  data() {
    return {
      menuOpen: false
    }
  },
  methods: {
    toggleMenu() {
      this.menuOpen = !this.menuOpen
    }
  }
}
</script>

<style scoped>
nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem;
  background: #333;
  color: white;
}

.nav-links {
  display: flex;
  gap: 1rem;
}

.hamburger {
  display: none;
  background: none;
  border: none;
  color: white;
  font-size: 1.5rem;
  cursor: pointer;
}

@media (max-width: 768px) {
  .hamburger {
    display: block;
  }

  .nav-links {
    display: none;
    flex-direction: column;
    position: absolute;
    top: 60px;
    left: 0;
    width: 100%;
    background: #333;
    padding: 1rem;
  }

  .nav-links.active {
    display: flex;
  }
}
</style>

动态导航栏实现

根据用户权限动态显示导航项:

<template>
  <nav>
    <router-link v-for="item in visibleNavItems" 
                 :key="item.path" 
                 :to="item.path">
      {{ item.name }}
    </router-link>
  </nav>
</template>

<script>
export default {
  computed: {
    visibleNavItems() {
      const allRoutes = [
        { path: '/', name: 'Home', requiresAuth: false },
        { path: '/dashboard', name: 'Dashboard', requiresAuth: true },
        { path: '/admin', name: 'Admin', requiresAdmin: true }
      ]

      return allRoutes.filter(route => {
        if (route.requiresAdmin) {
          return this.$store.getters.isAdmin
        }
        if (route.requiresAuth) {
          return this.$store.getters.isAuthenticated
        }
        return true
      })
    }
  }
}
</script>

导航栏动画效果

为导航栏添加过渡动画:

<template>
  <nav>
    <transition-group name="nav-item" tag="div" class="nav-container">
      <router-link v-for="item in navItems" 
                  :key="item.path" 
                  :to="item.path"
                  class="nav-link">
        {{ item.name }}
      </router-link>
    </transition-group>
  </nav>
</template>

<style scoped>
.nav-container {
  display: flex;
  gap: 1rem;
}

.nav-link {
  transition: all 0.3s ease;
}

.nav-item-enter-active,
.nav-item-leave-active {
  transition: all 0.5s ease;
}

.nav-item-enter-from,
.nav-item-leave-to {
  opacity: 0;
  transform: translateY(-20px);
}
</style>

标签: vue
分享给朋友:

相关文章

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-containe…

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript 图表…

vue实现点击

vue实现点击

实现点击事件的基本方法 在Vue中实现点击事件可以通过v-on指令或@简写方式绑定。以下是常见的点击事件绑定方法: <template> <button v-on:click=…

vue 路由 实现

vue 路由 实现

Vue 路由实现方法 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是实现 Vue 路由的详细步骤: 安装 Vue Router 通过 npm 或 ya…

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue实现必填

vue实现必填

Vue 实现表单必填验证的方法 在Vue中实现表单必填验证可以通过多种方式完成,以下是几种常见的方法: 使用HTML5原生属性 最简单的必填验证可以通过HTML5的required属性实现: &l…