vant中Tabbar自定义图标
有时候根据需求需要自定义图标,使用图片的形式。
<template>
<div class="home">
<router-view></router-view>
<TabBar :tabData="tabbarList" />
</div>
</template>
<script>
import TabBar from '@/components/TabBar';
export default {
name: 'HomeView',
components: {
TabBar
},
data() {
return {
active: 0,
tabbarList: [
{
title: '首页',
path: { name: 'home'},
normal: require("../../src/assets/images/home_black.png"),
active: require("../../src/assets/images/home_selected.png")
},
{
title: '标准',
path: { name: 'Standardization'},
normal: require("../../src/assets/images/standard_black.png"),
active: require("../../src/assets/images/standard_selected.png")
},
{
title: '商户',
path: { name: 'inventory'},
normal: require("../../src/assets/images/standard_black.png"),
active: require("../../src/assets/images/standard_selected.png")
},
{
title: '我的',
path: { name: 'setup'},
normal: require("../../src/assets/images/standard_black.png"),
active: require("../../src/assets/images/standard_selected.png")
}
]
}
}
}
</script>
tabBar组件
<template>
<div class="tabbar">
<van-tabbar v-model="active" @click="handleChange" fixed router >
<van-tabbar-item
v-for="(item, index) in tabData"
:icon="item.icon"
:to="item.path"
:key="index">
<span :class="defaultActive === index ? active:''">{{item.title}}</span>
<template slot="icon" slot-scope="props">
<img :src="props.active ? item.active : item.normal">
</template>
</van-tabbar-item>
</van-tabbar>
</div>
</template>
<script>
export default {
name: 'TabBar',
props: {
defaultActive: {
type: Number,
default: 0
},
tabData: {
type: Array,
default: () => []
}
},
data() {
return {
active: this.defaultActive
}
},
methods: {
handleChange(val) {
this.$emit('change', val);
}
}
}
</script>
<style scoped>
.active_tab img {
width: 3rem;
height: 3rem;
}
.van-tabbar-item--active {
color: #0E5CD8;
}
</style>

浙公网安备 33010602011771号