更新记录
1.0.3(2025-10-11) 下载此版本
更新组件入参文档
1.0.2(2025-10-11) 下载此版本
修复圆角下下划线位置错误
1.0.1(2025-09-27) 下载此版本
修复readmine文档
查看更多平台兼容性
uni-app(3.6.12)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
uni-app x(3.6.10)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| √ | √ | √ |
Tabs 标签组件使用文档
组件介绍
Tabs 标签组件是一款适配 uni-app 多端(H5、微信小程序、App 及 NVUE 环境)的高性能标签切换组件。支持标签横向滚动、下划线平滑动画、内置徽章(Badge)等核心功能,可根据标签数量自动适配固定或滚动布局,激活标签自动居中,满足移动端常见业务场景(如分类切换、页面导航等)。
核心特性
- ✅ 多端兼容:无缝适配 H5、微信小程序、App(含 NVUE),动画效果自动适配平台特性
- ✅ 内置 Badge:支持数字显示、红点模式、自定义颜色 / 形状,无需依赖外部组件
- ✅ 灵活配置:标签样式、下划线样式、滚动模式均可自定义,满足多样化设计需求
- ✅ 性能优化:采用 DOM 尺寸缓存机制,减少重复查询,切换流畅无卡顿
- ✅ 完整状态:支持标签禁用、点击 / 长按事件、激活状态双向同步
快速上手
<template>
<view class="page-container">
<!-- Tabs 组件 -->
<tian-tabs>
:list="tabsList"
:current="activeTab"
@change="handleTabChange"
lineColor="#4cd964"
/>
<!-- 内容区域(根据标签切换显示) -->
<view class="content">
{{ tabsList[activeTab].name }} 页面内容
</view>
</view>
</template>
<script>
export default {
data() {
return {
activeTab: 0, // 当前激活标签索引
tabsList: [ // 标签数据源
{ name: '推荐', badge: { value: 5 } }, // 带数字徽章
{ name: '热点', badge: { isDot: true } }, // 带红点徽章
{ name: '财经', badge: { value: 102, max: 99, type: 'warning' } }, // 数字超出显示 99+
{ name: '科技', disabled: true }, // 禁用标签
{ name: '体育', badge: { value: 0, showZero: true, type: 'success' } } // 显示 0 值
]
};
},
methods: {
// 标签切换事件
handleTabChange(index) {
this.activeTab = index;
console.log('切换到标签:', this.tabsList[index].name);
}
}
};
</script>
<style scoped>
.page-container {
padding-top: 20px;
}
.content {
padding: 20px;
font-size: 16px;
}
</style>
组件 API 详解
1. Props(属性配置)
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
list |
Array |
[] |
必传,标签数据源。每个项为对象,结构详见 list 数据格式 |
current |
Number |
0 |
当前激活标签的索引(支持双向绑定:外部修改会触发组件更新) |
scrollable |
Boolean |
true |
是否允许标签横向滚动(当标签超出容器宽度时生效;false 时采用平均分布布局) |
keyName |
String |
'name' |
指定从 list 项中读取标签文本的字段名(如设为 'title' 则读取 item.title) |
lineWidth |
Number \| String |
20 |
下划线宽度(单位 px,支持数字或带单位字符串,如 20 或 '20px') |
lineHeight |
Number \| String |
3 |
下划线高度(单位 px,格式同 lineWidth) |
lineColor |
String |
'#3c9cff' |
下划线颜色(支持十六进制、RGB 等 CSS 颜色格式) |
duration |
Number |
200 |
下划线切换动画时长(单位:ms,数值越大动画越慢) |
activeTextStyle |
Object \| String |
{ color: '#3c9cff', fontWeight: '500' } |
激活状态下的文本样式,支持对象或 CSS 字符串 |
inactiveTextStyle |
Object \| String |
{ color: '#606266' } |
未激活状态下的文本样式,格式同 activeTextStyle |
tabItemStyle |
Object \| String |
{ padding: '0 12px', height: '44px' } |
单个标签项的基础样式,控制内边距、高度等 |
2. list 数据格式
list 为标签数组,每项对象支持字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
[keyName] |
String |
标签显示文本,由 keyName 决定字段名,默认为 item.name |
disabled |
Boolean |
是否禁用该标签(不可点击,不触发 change) |
badge |
Object |
可选,徽章配置,详见 badge 配置 |
3. badge 配置(内置徽章)
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
value |
Number \| String |
'' |
徽章显示内容(如 5、'new'、'99+') |
isDot |
Boolean |
false |
是否显示为红点(忽略 value) |
max |
Number |
99 |
数字最大值,超过则显示 ${max}+ |
type |
String |
'error' |
背景色类型:'error'(红)、'success'(绿)、'warning'(橙)、'info'(灰) |
showZero |
Boolean |
false |
value 为 0 时是否显示徽章 |
bgColor |
String |
- | 自定义背景色(优先级高于 type) |
color |
String |
'#fff' |
文本/红点颜色 |
shape |
String |
'circle' |
形状:'circle'(圆形)、'square'(方形) |
inverted |
Boolean |
false |
是否反向模式(透明背景 + 边框) |
4. Events(事件)
| 事件名 | 回调参数 | 说明 |
|---|---|---|
change |
(index: Number) |
标签切换时触发,返回新激活索引 |
click |
(payload: { item: Object, index: Number }) |
点击标签时触发(包括禁用项) |
longpress |
(payload: { item: Object, index: Number }) |
长按标签时触发(禁用项不触发) |
5. Slots(插槽)
| 插槽名 | 说明 |
|---|---|
left |
标签栏左侧插槽,可用于放置返回按钮、图标等 |
right |
标签栏右侧插槽,可用于放置搜索、更多操作等 |
高级用法示例
-
禁用标签 + 自定义下划线样式
<tian-tabs> :list="[ { name: '全部订单' }, { name: '已完成' }, { name: '待付款', disabled: true }, // 禁用标签 { name: '已取消' } ]" lineWidth="30" // 下划线宽度 30px lineHeight="4" // 下划线高度 4px lineColor="#4cd964" // 绿色下划线 :activeTextStyle="{ color: '#4cd964', fontSize: '16px', fontWeight: 'bold' }" // 激活文本样式 :tabItemStyle="{ padding: '0 16px', height: '50px' }" // 标签项高度 50px /> -
反向模式徽章 + 方形形状
<tian-tabs> :list="[ { name: '消息中心', badge: { value: '99+', shape: 'square', // 方形徽章 inverted: true, // 反向模式(透明背景+边框) type: 'info', // 灰色边框 color: '#86909c' // 边框颜色 } }, { name: '通知', badge: { isDot: true, // 红点模式 color: '#ff7d00' // 橙色红点 } } ]" /> -
固定标签布局(不滚动) 当标签数量较少(如 3 个以内)时,可设置 scrollable: false 让标签平均分配容器宽度:
<tian-tabs> :list="[ { name: '首页' }, { name: '分类' }, { name: '我的' } ]" :scrollable="false" // 固定布局,不滚动 :tabItemStyle="{ padding: '0 8px' }" // 减小内边距,避免文本换行 /> -
结合插槽实现左右功能按钮
<tian-tabs> :list="[ { name: '推荐' }, { name: '热点' }, { name: '财经' }, { name: '科技' } ]" :current="activeTab" @change="handleTabChange" > <!-- 左侧插槽:返回按钮 --> <template #left> <view class="back-btn" @tap="handleBack"> <uni-icons type="left" size="22" color="#666"></uni-icons> </view> </template> <!-- 右侧插槽:搜索 + 更多按钮 --> <template #right> <view class="right-tools"> <uni-icons type="search" size="22" color="#666" style="margin-right: 16px;"></uni-icons> <uni-icons type="more-filled" size="22" color="#666"></uni-icons> </view> </template> </Tabs>

收藏人数:
下载插件并导入HBuilderX
下载示例项目ZIP
赞赏(1)
下载 91
赞赏 1
下载 10964649
赞赏 1800
赞赏
京公网安备:11010802035340号