vant 底部导航栏 中间凸起
1.tabBar代码
<template>
<div>
<van-tabbar fixed route v-model="active" @change="handleChange">
<van-tabbar-item v-for="(item, index) in data" :to="item.to" :icon="item.icon" :badge='item.badge' :key="index">
<span :class="defaultActive === index ? active:''">{{ item.title }}</span>
<template slot="icon" slot-scope="props">
<img :src="props.active ? item.active : item.normal" v-show="index !==1">
<img :src="props.active ? item.active : item.normal" class="tui" v-show="index===1">
</template>
</van-tabbar-item>
</van-tabbar>
</div>
</template>
<script>
export default {
name: 'TabBar',
props: {
defaultActive: {
type: Number,
default: 0
},
data: {
type: Array,
default: () => {
return []
}
}
},
data() {
return {
active: this.defaultActive
}
},
methods: {
handleChange(value) {
this.$emit('change', value)
}
}
}
</script>
<style scoped>
.active_tab img {
width: 26px;
height: 26px;
}
/* 自定义选中的颜色 */
.van-tabbar-item--active {
color: #d81e06;
}
.tui {
width: 50px;
height: 50px;
margin-top: -40px;
z-index: 100000;
}
[class*=van-hairline]::after {
border: none !important
}
</style>
2.中间按钮,路由配置,注意不要放在Main下面的Children中,单独配置路由;[根据具体需求配置]
{
path: '/',
component: () => import('@/views/index'),
redirect: '/home',
meta: {
title: '首页',
keepAlive: true
},
children: [
{
path: '/home',
name: 'Home',
component: () => import('@/views/home/index'),
meta: {title: '首页', keepAlive: true}
},
{
path: '/model',
name: 'Model',
component: () => import('@/views/model/index'),
meta: {title: '模块', keepAlive: true}
},
{
path: '/mine',
name: 'Mine',
component: () => import('@/views/mine/index'),
meta: {title: '个人中心', keepAlive: true}
}
]
},
{
path: '/add',
name: 'Add',
meta: {title: '新增'},
component: () => import('@/views/add/index')
},
3.中间图标文件
4.效果图