更新记录

1.0.0(2026-10-16) 下载此版本

新增

  • 首次发布
  • 通用标签栏组件:type='line' 下划线指示器 / type='capsule' 胶囊高亮
  • 灵活数据源:tabs 支持 string 数组或 {title, badge, disabled} 对象数组,可混合
  • 支持徽标 badge 与禁用 disabled
  • 支持横向滚动 scrollable,自动定位到激活项
  • 颜色、高度、字号、指示条尺寸全部可配
  • 通过 v-model 双向绑定选中索引,@change 获取 { index, item }

平台兼容性

uni-app(4.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- √ - - √ × √ √ √
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
√ - - - - - - - - - - -

ry-tabs 通用标签栏组件

作者:Howe

通用标签栏组件:type='line' 下划线指示器 / type='capsule' 胶囊高亮双形态。tabs 支持字符串或对象混合数组,内建徽标、禁用、横向滚动,颜色尺寸全部可配,一套 API 覆盖顶部页签、分类筛选、轻量导航。

需要 uni-app x(uvue)版本请使用 ry-tabs-x 插件。

安装

三种方式任选其一。

方式一:源码放到 components 目录(推荐)

下载源码后,把组件放到项目的 components/ry-tabs/ry-tabs.vue,保持该目录结构,即符合 easycom 默认规则,Vue3 自动注册,无需任何配置。

页面直接写 <ry-tabs />。

方式二:手动导入

组件放在其他任意位置时,显式导入注册即可,与 easycom 不冲突(显式导入优先生效):

// <script setup> 中 import 后直接使用,或注册到 components 选项
import ryTabs from '@/components/ry-tabs/ry-tabs.vue'

方式三:uni_modules 导入

通过 HBuilderX 从插件市场导入 uni_modules,组件位于 uni_modules/ry-tabs/components/ry-tabs/ 下,同样自动注册,无需 import。

使用示例

<template>
  <!-- 1. 最简用法:字符串数组 + v-model -->
  <ry-tabs v-model="current" :tabs="['全部', '待付款', '待发货', '已完成']"/>

  <!-- 2. 对象数组:徽标 + 禁用 -->
  <ry-tabs
    v-model="current"
    :tabs="[
      { title: '消息', badge: 8 },
      { title: '通知', badge: 'NEW' },
      { title: '已关闭', disabled: true }
    ]"
  />

  <!-- 3. 胶囊形态 + 自定义主题色 -->
  <ry-tabs v-model="current" type="capsule" active-color="#ff5500" :tabs="tabs"/>

  <!-- 4. 横向滚动(标签过多时) + change 事件 -->
  <ry-tabs v-model="current" :scrollable="true" :tabs="tabs" @change="onChange"/>
</template>

<script setup>
import { ref } from 'vue'
const current = ref(0)
const tabs = [
  { title: '推荐' },
  { title: '热榜' },
  { title: '关注' }
  /* ...更多标签 */
]
const onChange = (e) => {
  console.log('当前索引:', e.index, '当前项:', e.item)
}
</script>

Props

参数 类型 默认值 说明
modelValue Number 0 当前选中索引(v-model)
tabs Array [] 标签数据:string 数组或 {title, badge, disabled} 对象数组,可混合
type String 'line' 形态:'line' 下划线 / 'capsule' 胶囊
scrollable Boolean false 是否横向滚动(标签过多时开启,自动定位到激活项)
activeColor String #3c9cff 激活颜色(下划线/胶囊背景/激活文字)
inactiveColor String #666666 未激活文字颜色
disabledColor String #c0c4cc 禁用文字颜色
background String #ffffff 背景色
height Number 88 标签栏高度(rpx)
fontSize Number 28 文字字号(rpx)
lineWidth Number 40 下划线宽度(rpx)
lineHeight Number 6 下划线高度(rpx)
badgeColor String #fa3534 徽标背景色
badgeSize Number 20 徽标字号(rpx)

Events

事件名 说明 回调参数
update:modelValue 选中索引同步(v-model) value: Number
change 点击切换标签后触发 e: { index, item },item 为传入 tabs 的原始元素

技术支持

  • 微信:howe1144(一定在线,紧急问题首选)
  • QQ 群:415367029(常规问题,群友互助,作者可能在线)
  • ***(很少在线)
  • 插件市场评论区:回复不及时,仅适合不着急的留言反馈

支持与赞赏

如果你觉得本插件解决了你的问题,可以考虑支持作者:

支付宝赞助 微信赞助

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。