当前位置:首页 > VUE

vue实现底部tab

2026-01-19 03:00:05VUE

使用 Vue Router 实现底部 Tab

在 Vue 项目中,可以通过 vue-router 结合自定义组件实现底部 Tab 导航。创建一个 TabBar 组件,并在路由配置中定义每个 Tab 对应的页面。

vue实现底部tab

<template>
  <div class="tab-bar">
    <router-link 
      v-for="(item, index) in tabs" 
      :key="index" 
      :to="item.path" 
      class="tab-item"
    >
      <span>{{ item.name }}</span>
    </router-link>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tabs: [
        { name: '首页', path: '/home' },
        { name: '分类', path: '/category' },
        { name: '购物车', path: '/cart' },
        { name: '我的', path: '/profile' }
      ]
    }
  }
}
</script>

<style scoped>
.tab-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  height: 50px;
  background: #fff;
  border-top: 1px solid #eee;
}

.tab-item {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}

.router-link-active {
  color: #ff6700;
}
</style>

配置 Vue Router

在路由配置文件中,为每个 Tab 页面定义对应的路由。

vue实现底部tab

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '@/views/Home.vue'
import Category from '@/views/Category.vue'
import Cart from '@/views/Cart.vue'
import Profile from '@/views/Profile.vue'

Vue.use(VueRouter)

const routes = [
  { path: '/home', component: Home },
  { path: '/category', component: Category },
  { path: '/cart', component: Cart },
  { path: '/profile', component: Profile },
  { path: '/', redirect: '/home' }
]

const router = new VueRouter({
  routes
})

export default router

动态高亮当前 Tab

通过 $route.path 判断当前路由,动态添加高亮样式。

<template>
  <div class="tab-bar">
    <div 
      v-for="(item, index) in tabs" 
      :key="index" 
      @click="changeTab(item.path)"
      :class="['tab-item', { 'active': $route.path === item.path }]"
    >
      <span>{{ item.name }}</span>
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    changeTab(path) {
      this.$router.push(path)
    }
  }
}
</script>

<style scoped>
.active {
  color: #ff6700;
}
</style>

使用第三方 UI 库

可以借助第三方库如 vant 快速实现底部 Tab。

npm install vant
import { Tabbar, TabbarItem } from 'vant'
Vue.use(Tabbar).use(TabbarItem)
<template>
  <van-tabbar v-model="active">
    <van-tabbar-item icon="home-o" to="/home">首页</van-tabbar-item>
    <van-tabbar-item icon="search" to="/category">分类</van-tabbar-item>
    <van-tabbar-item icon="cart-o" to="/cart">购物车</van-tabbar-item>
    <van-tabbar-item icon="user-o" to="/profile">我的</van-tabbar-item>
  </van-tabbar>
</template>

<script>
export default {
  data() {
    return {
      active: 0
    }
  }
}
</script>

注意事项

  • 使用 position: fixed 固定底部 Tab 位置,确保内容区域不会被遮挡。
  • 路由配置中设置默认重定向,确保首次加载显示正确的 Tab 页面。
  • 移动端项目需考虑适配问题,可使用 remvw/vh 单位。

标签: vuetab
分享给朋友:

相关文章

vue实现冰墩墩

vue实现冰墩墩

使用 Vue 实现冰墩墩动画 通过 Vue 的动画特性和 SVG 技术,可以动态渲染冰墩墩的形象。以下是具体实现方法: 准备 SVG 素材 冰墩墩的形象通常由多个 SVG 路径组成,包括身体轮廓、面…

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue实现帖子

vue实现帖子

Vue 实现帖子功能 使用 Vue 实现帖子功能需要结合前端框架和后端数据交互,以下是实现的关键步骤和代码示例。 帖子列表展示 创建帖子列表组件,使用 v-for 渲染帖子数据,通过 axios…

vue实现颜色

vue实现颜色

Vue 实现颜色的方法 在 Vue 中实现颜色管理可以通过多种方式,以下是一些常见的方法: 使用 CSS 变量动态绑定颜色 在 Vue 组件的样式中定义 CSS 变量,并通过 Vue 的数据绑定动…

vue 全景实现

vue 全景实现

Vue 全景实现方案 在Vue中实现全景效果,通常需要结合WebGL或第三方库来处理3D场景渲染。以下是几种常见方法: 使用Three.js库 Three.js是一个强大的WebGL库,适合创建3D…