当前位置:首页 > VUE

vue3.0实现导航条

2026-01-12 08:04:47VUE

使用Vue 3.0实现导航条

创建导航组件

新建一个NavBar.vue文件,定义导航结构。以下是一个基础导航条示例:

<template>
  <nav class="navbar">
    <div class="navbar-brand">
      <router-link to="/">Logo</router-link>
    </div>
    <ul class="navbar-menu">
      <li v-for="item in navItems" :key="item.path">
        <router-link :to="item.path">{{ item.name }}</router-link>
      </li>
    </ul>
  </nav>
</template>

<script>
import { ref } from 'vue';

export default {
  name: 'NavBar',
  setup() {
    const navItems = ref([
      { name: 'Home', path: '/' },
      { name: 'About', path: '/about' },
      { name: 'Contact', path: '/contact' }
    ]);

    return { navItems };
  }
};
</script>

<style scoped>
.navbar {
  display: flex;
  justify-content: space-between;
  padding: 1rem;
  background-color: #333;
  color: white;
}
.navbar-menu {
  display: flex;
  list-style: none;
  gap: 1rem;
}
.navbar-menu a {
  color: white;
  text-decoration: none;
}
.navbar-menu a:hover {
  text-decoration: underline;
}
</style>

集成Vue Router

确保已安装vue-router,并在main.js或路由配置文件中注册路由:

vue3.0实现导航条

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

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

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

export default router;

在App.vue中使用导航组件

将导航条嵌入到应用的主布局中:

vue3.0实现导航条

<template>
  <NavBar />
  <router-view />
</template>

<script>
import NavBar from './components/NavBar.vue';

export default {
  components: { NavBar }
};
</script>

响应式导航(可选)

添加响应式功能,例如在小屏幕下显示汉堡菜单:

<template>
  <nav class="navbar">
    <div class="navbar-brand">
      <router-link to="/">Logo</router-link>
      <button @click="toggleMenu">☰</button>
    </div>
    <ul class="navbar-menu" :class="{ 'active': isMenuOpen }">
      <li v-for="item in navItems" :key="item.path">
        <router-link :to="item.path">{{ item.name }}</router-link>
      </li>
    </ul>
  </nav>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const isMenuOpen = ref(false);
    const toggleMenu = () => {
      isMenuOpen.value = !isMenuOpen.value;
    };

    return { isMenuOpen, toggleMenu };
  }
};
</script>

<style scoped>
.navbar-menu {
  display: flex;
  list-style: none;
  gap: 1rem;
}
@media (max-width: 768px) {
  .navbar-menu {
    display: none;
    flex-direction: column;
  }
  .navbar-menu.active {
    display: flex;
  }
}
</style>

动态高亮当前路由

通过vue-routeruseRoute钩子实现当前路由高亮:

<script>
import { ref } from 'vue';
import { useRoute } from 'vue-router';

export default {
  setup() {
    const route = useRoute();
    const navItems = ref([
      { name: 'Home', path: '/' },
      { name: 'About', path: '/about' },
      { name: 'Contact', path: '/contact' }
    ]);

    const isActive = (path) => {
      return route.path === path;
    };

    return { navItems, isActive };
  }
};
</script>

<template>
  <li v-for="item in navItems" :key="item.path">
    <router-link :to="item.path" :class="{ 'active': isActive(item.path) }">
      {{ item.name }}
    </router-link>
  </li>
</template>

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

以上方法覆盖了基础导航条实现、路由集成、响应式设计及动态样式调整。

标签: 导航条
分享给朋友:

相关文章

css制作下拉导航条

css制作下拉导航条

使用纯CSS制作下拉导航条 HTML结构部分需要包含导航主菜单和子菜单项,通常使用嵌套的无序列表(<ul>和<li>)实现: <nav class="dropdown…

用css制作导航条

用css制作导航条

水平导航条制作 使用display: inline-block或flexbox实现水平导航 为<ul>和<li>设置样式消除默认列表样式 添加padding和margin控制间…

css导航条在线制作

css导航条在线制作

CSS导航条在线制作工具 以下是几款实用的在线工具和生成器,可快速创建CSS导航条,无需手动编写代码: CSS Menu Maker 提供多种预设模板,支持水平、垂直导航条,可自定义颜色、字体和悬…