r-tabbar
r-tabbar 标签栏,底部导航栏,用于在不同页面之间进行切换。
示例
vue
<template>
<r-config-provider>
<view style="padding: 10rpx 0">
<r-divider content-position="left">基本使用</r-divider>
<r-tabbar v-model:value="active" :fixed="false">
<r-tabbar-item icon="home-o">标签</r-tabbar-item>
<r-tabbar-item icon="search">标签</r-tabbar-item>
<r-tabbar-item icon="friends-o">标签</r-tabbar-item>
<r-tabbar-item icon="setting-o">标签</r-tabbar-item>
</r-tabbar>
<r-divider content-position="left">通过名称匹配 </r-divider>
<r-tabbar v-model:value="active2" :fixed="false">
<r-tabbar-item name="home" icon="home-o">标签</r-tabbar-item>
<r-tabbar-item name="search" icon="search">标签</r-tabbar-item>
<r-tabbar-item name="friends" icon="friends-o">标签</r-tabbar-item>
<r-tabbar-item name="setting" icon="setting-o">标签</r-tabbar-item>
</r-tabbar>
<r-divider content-position="left">徽标提示 </r-divider>
<r-tabbar v-model:value="active" :fixed="false">
<r-tabbar-item icon="home-o">标签</r-tabbar-item>
<r-tabbar-item icon="search" dot>标签</r-tabbar-item>
<r-tabbar-item icon="friends-o" badge="5">标签</r-tabbar-item>
<r-tabbar-item icon="setting-o" badge="20">标签</r-tabbar-item>
</r-tabbar>
<r-divider content-position="left">自定义图标 </r-divider>
<r-tabbar v-model:value="active" :fixed="false">
<r-tabbar-item badge="3">
<span>自定义</span>
<template #icon="props">
<r-image
width="var(--r-tabbar-item-icon-size)"
height="var(--r-tabbar-item-icon-size)"
:src="props.active ? icon.active : icon.inactive"
/>
</template>
</r-tabbar-item>
<r-tabbar-item icon="search">标签</r-tabbar-item>
<r-tabbar-item icon="setting-o">标签</r-tabbar-item>
</r-tabbar>
<r-divider content-position="left">自定义颜色 </r-divider>
<r-tabbar v-model:value="active" active-color="#ee0a24" :fixed="false">
<r-tabbar-item icon="home-o">标签</r-tabbar-item>
<r-tabbar-item icon="search">标签</r-tabbar-item>
<r-tabbar-item icon="friends-o">标签</r-tabbar-item>
<r-tabbar-item icon="setting-o">标签</r-tabbar-item>
</r-tabbar>
<r-divider content-position="left">监听切换事件 </r-divider>
<r-tabbar v-model:value="active" @change="onChange" :fixed="false">
<r-tabbar-item icon="home-o">标签 1</r-tabbar-item>
<r-tabbar-item icon="search">标签 2</r-tabbar-item>
<r-tabbar-item icon="friends-o">标签 3</r-tabbar-item>
<r-tabbar-item icon="setting-o">标签 4</r-tabbar-item>
</r-tabbar>
</view>
</r-config-provider>
</template>
<script setup>
import { ref } from "vue";
const active = ref(0);
const active2 = ref("home");
const icon = ref({
active: "https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png",
inactive: "https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png",
});
const onChange = (e) => {
console.log("e", e);
};
</script>API
Tabbar Props
| 名称 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
| value | 当前选中标签的名称或索引值 | String|Number | 0 | |
| fixed | 是否固定在顶部 | Boolean | false | |
| border | 是否显示下边框 | Boolean | true | |
| z-index | 导航栏 z-index | String | Number | 1 | |
| active-color | 选中标签的颜色 | String | #1989fa | |
| inactive-color | 未选中标签的颜色 | String | #7d7e80 | |
| placeholder | 固定在底部时,是否在标签位置生成一个等高的占位元素 | Boolean | false | |
| safe-area-inset-bottom | 是否开启底部安全区适配 | Boolean | false | |
| before-change | 切换标签前的回调函数,返回 false 可阻止切换,支持返回 Promise | Function | - | |
| themeName | 主题名称 | String | default |
Tabbar Events
| 名称 | 说明 | 回调参数 |
|---|---|---|
| update:value | 切换标签时触发 | active |
| change | 切换标签后触发 | active |
TabbarItem Props
| 名称 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
| name | 标签名称,作为匹配的标识符 | Number|String | - | - |
| icon | 图标名称 | String | - | - |
| icon-prefix | 图标类名前缀 | String | van-icon | iconfont |
| dot | 是否显示图标右上角小红点 | Boolean | false | true |
| badge | 图标右上角徽标的内容 | Number|String | - | - |
| badgeColor | 徽标背景颜色 | String | - | - |
| max | 最大值,超过最大值会显示 {max}+,仅当 content 为数字时有效 | Number| String | - | - |
| offset | 设置徽标的偏移量,数组的两项分别对应水平向右和垂直向下方向的偏移量,默认单位为 px | Array | - | - |
| showZero | 当 content 为数字 0 或字符串 '0' 时,是否展示徽标 | Boolean | true | false |
| position | 徽标位置 | String | top-right | top-right top-left bottom-left bottom-right |
| themeName | 主题名称 | String | default |
TabbarItem Slots
| 名称 | 说明 | 回调参数 |
|---|---|---|
| icon | 自定义图标 | active |
更多组件,请前往rainui
