当前位置:首页 > 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>

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

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

相关文章

css3制作3d导航条

css3制作3d导航条

CSS3 3D导航条制作方法 使用CSS3的3D变换和过渡效果可以创建具有立体感的导航条。以下是具体实现步骤: HTML结构 <nav class="nav-3d"> <ul…

css导航条制作

css导航条制作

水平导航条制作 使用display: inline-block或flexbox实现水平排列 .navbar { background-color: #333; overflow: hidde…

css制作下拉导航条

css制作下拉导航条

使用纯CSS制作下拉导航条 通过CSS的:hover伪类和display属性控制下拉菜单的显示与隐藏。HTML结构需嵌套无序列表,CSS设置定位和过渡效果。 HTML结构示例: <nav&g…

css制作右侧导航条

css制作右侧导航条

固定定位实现右侧导航条 使用CSS的position: fixed属性将导航条固定在视窗右侧,适用于需要常驻显示的导航栏。示例代码: .right-nav { position: fixed;…

css导航条制作

css导航条制作

CSS导航条制作方法 水平导航条 使用display: inline-block或flexbox实现水平导航条。设置背景色、内边距和悬停效果增强交互性。 <nav> <ul…

css导航条在线制作

css导航条在线制作

在线制作CSS导航条的工具与方法 使用CSS导航生成器工具 推荐几个在线工具,可快速生成响应式导航条代码: CSS Menu Maker(www.cssmenumaker.com):提供…