Tabbar
Install
import Vue from 'vue';
import { Tabbar, TabbarItem } from 'vant';
Vue.use(Tabbar);
Vue.use(TabbarItem);
Usage
Basic Usage
<van-tabbar v-model="active">
<van-tabbar-item icon="home-o">Tab</van-tabbar-item>
<van-tabbar-item icon="search">Tab</van-tabbar-item>
<van-tabbar-item icon="friends-o">Tab</van-tabbar-item>
<van-tabbar-item icon="setting-o">Tab</van-tabbar-item>
</van-tabbar>
export default {
data() {
return {
active: 0
}
}
}
Match by name
<van-tabbar v-model="active">
<van-tabbar-item name="home" icon="home-o">Tab</van-tabbar-item>
<van-tabbar-item name="search" icon="search">Tab</van-tabbar-item>
<van-tabbar-item name="friends" icon="friends-o">Tab</van-tabbar-item>
<van-tabbar-item name="setting" icon="setting-o">Tab</van-tabbar-item>
</van-tabbar>
export default {
data() {
return {
active: 'home'
}
}
}
Show Badge
<van-tabbar v-model="active">
<van-tabbar-item icon="home-o">Tab</van-tabbar-item>
<van-tabbar-item icon="search" dot>Tab</van-tabbar-item>
<van-tabbar-item icon="friends-o" info="5">Tab</van-tabbar-item>
<van-tabbar-item icon="setting-o" info="20">Tab</van-tabbar-item>
</van-tabbar>
Custom Icon
Use icon
slot to custom icon
<van-tabbar v-model="active">
<van-tabbar-item info="3">
<span>Custom</span>
<img
slot="icon"
slot-scope="props"
:src="props.active ? icon.active : icon.inactive"
>
</van-tabbar-item>
<van-tabbar-item icon="search">Tab</van-tabbar-item>
<van-tabbar-item icon="setting-o">Tab</van-tabbar-item>
</van-tabbar>
export default {
data() {
return {
active: 0,
icon: {
active: 'https://img.yzcdn.cn/vant/user-active.png',
inactive: 'https://img.yzcdn.cn/vant/user-inactive.png'
}
}
}
}
Custom Color
<van-tabbar
v-model="active"
active-color="#07c160"
inactive-color="#000"
>
<van-tabbar-item icon="home-o">Tab</van-tabbar-item>
<van-tabbar-item icon="search">Tab</van-tabbar-item>
<van-tabbar-item icon="freinds-o">Tab</van-tabbar-item>
<van-tabbar-item icon="setting-o">Tab</van-tabbar-item>
</van-tabbar>
Change Event
<van-tabbar v-model="active" @change="onChange">
<van-tabbar-item icon="home-o">Tab1</van-tabbar-item>
<van-tabbar-item icon="search">Tab2</van-tabbar-item>
<van-tabbar-item icon="freinds-o">Tab3</van-tabbar-item>
<van-tabbar-item icon="setting-o">Tab4</van-tabbar-item>
</van-tabbar>
import { Notify } from 'vant';
export default {
methods: {
onChange(index) {
Notify({ type: 'primary', message: index });
}
}
}
Route Mode
<router-view />
<van-tabbar route>
<van-tabbar-item replace to="/home" icon="home-o">
Tab
</van-tabbar-item>
<van-tabbar-item replace to="/search" icon="search">
Tab
</van-tabbar-item>
</van-tabbar>
API
Tabbar Props
Attribute |
Description |
Type |
Default |
v-model |
Identifier of current tab |
number | string |
0 |
fixed |
Whether to fixed bottom |
boolean |
true |
border |
Whether to show border |
boolean |
true |
z-index |
Z-index |
number | string |
1 |
active-color |
Color of active tab item |
string |
#1989fa |
inactive-color |
Color of inactive tab item |
string |
#7d7e80 |
route |
Whether to enable route mode |
boolean |
false |
safe-area-inset-bottom |
Whether to enable bottom safe area adaptation |
boolean |
false |
Tabbar Events
Event |
Description |
Arguments |
change |
Triggered when change active tab |
active: index of current tab |
TabbarItem Props
Attribute |
Description |
Type |
Default |
name |
Identifier |
number | string |
Item index |
icon |
Icon name |
string |
- |
icon-prefix v2.5.3 |
Icon className prefix |
string |
van-icon |
dot |
Whether to show red dot |
boolean |
- |
info |
Content of the badge |
number | string |
- |
url |
Link |
string |
- |
to |
Target route of the link, same as to of vue-router |
string | object |
- |
replace |
If true, the navigation will not leave a history record |
boolean |
false |
TabbarItem Slots
Name |
Description |
SlotProps |
icon |
Custom icon |
active |