当前位置:首页 > VUE

vue底部导航简单实现

2026-02-22 02:06:13VUE

使用 Vue Router 实现底部导航

在 Vue 项目中,可以通过 Vue Router 结合自定义组件实现底部导航功能。以下是一个简单的实现步骤:

  1. 安装 Vue Router 确保项目中已安装 Vue Router,若未安装可通过以下命令安装:

    npm install vue-router
  2. 配置路由router/index.js 中定义路由,每个路由对应一个页面组件:

    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;
  3. 创建底部导航组件components/NavBar.vue 中定义导航栏,使用 <router-link> 实现路由跳转:

    vue底部导航简单实现

    <template>
      <div class="nav-bar">
        <router-link to="/">首页</router-link>
        <router-link to="/about">关于</router-link>
        <router-link to="/contact">联系</router-link>
      </div>
    </template>
    
    <style scoped>
    .nav-bar {
      position: fixed;
      bottom: 0;
      width: 100%;
      display: flex;
      justify-content: space-around;
      padding: 10px 0;
      background-color: #f0f0f0;
    }
    .router-link-active {
      color: #42b983;
      font-weight: bold;
    }
    </style>
  4. 在主页面中引入导航组件App.vue 中引入导航组件,并确保路由视图 <router-view> 有足够的底部间距:

    <template>
      <router-view />
      <NavBar />
    </template>
    
    <script>
    import NavBar from './components/NavBar.vue';
    
    export default {
      components: { NavBar },
    };
    </script>
    
    <style>
    body {
      margin-bottom: 60px; /* 避免内容被导航栏遮挡 */
    }
    </style>

使用第三方 UI 库快速实现

若希望快速实现,可以借助第三方 UI 库(如 Vant、Element UI 等)。以下是基于 Vant 的示例:

  1. 安装 Vant

    vue底部导航简单实现

    npm install vant
  2. 引入 Tabbar 组件main.js 中全局引入 Vant 的 Tabbar:

    import { createApp } from 'vue';
    import { Tabbar, TabbarItem } from 'vant';
    import 'vant/lib/index.css';
    
    const app = createApp(App);
    app.use(Tabbar).use(TabbarItem);
  3. 使用 Tabbar 组件 修改 NavBar.vue,直接使用 Vant 的 Tabbar:

    <template>
      <van-tabbar v-model="active" fixed>
        <van-tabbar-item to="/" icon="home-o">首页</van-tabbar-item>
        <van-tabbar-item to="/about" icon="user-o">关于</van-tabbar-item>
        <van-tabbar-item to="/contact" icon="chat-o">联系</van-tabbar-item>
      </van-tabbar>
    </template>
    
    <script>
    export default {
      data() {
        return { active: 0 };
      },
    };
    </script>

动态高亮当前路由

通过监听路由变化动态更新导航高亮状态:

// 在 NavBar.vue 的 script 中
import { ref, watch } from 'vue';
import { useRoute } from 'vue-router';

const route = useRoute();
const active = ref(0);

watch(
  () => route.path,
  (path) => {
    if (path === '/') active.value = 0;
    else if (path === '/about') active.value = 1;
    else if (path === '/contact') active.value = 2;
  }
);

以上方法可根据实际需求调整样式或功能,如添加图标、动画效果等。

标签: 简单vue
分享给朋友:

相关文章

vue实现一个系统

vue实现一个系统

Vue 系统实现步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目: npm init vue@latest my-system 选择需要的配置(Router、Pinia 等)。…

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现模块

vue实现模块

Vue 实现模块化的方法 Vue 支持多种模块化开发方式,可以根据项目需求选择适合的方案。 使用单文件组件(SFC) 单文件组件是 Vue 最常用的模块化方式,将模板、脚本和样式封装在一个 .vue…

vue实现海报

vue实现海报

Vue 实现海报生成方案 使用 html2canvas 库 html2canvas 是一个将 HTML 元素转换为 Canvas 的库,适合将 Vue 组件渲染为海报图片 安装依赖: npm in…

vue实现必填

vue实现必填

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