更新记录

1.2.0(2025-03-10) 下载此版本

  • 优化图标显示逻辑,支持设置不同状态的图标
  • 移除 showIcon 属性,改为判断是否有 icon 属性
  • 移除 circleText 属性,改为从 subTabs 的 icon_text 属性获取
  • 支持为每个下拉菜单的第一个子标签设置不同的圆形图标文字

1.1.0(2025-03-10) 下载此版本

  • 优化组件结构,支持任意主标签拥有子标签
  • 支持任意主标签显示下拉菜单和图标
  • 统一事件回调机制,使用tab-click事件替代原来的main-tab-click和sub-tab-select事件
  • 改进下拉菜单位置计算逻辑,根据主标签位置自动调整

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

xjx-tabs 自定义标签组件

介绍

xjx-tabs 是一个功能强大的自定义标签组件,支持主标签切换和下拉菜单功能,可自定义颜色和样式。适用于需要分类展示内容的场景,如商品分类、内容分类等。

特性

  • 支持任意主标签拥有子标签
  • 支持任意主标签显示下拉菜单
  • 支持主标签显示不同状态的图标
  • 自定义颜色和样式
  • 支持子标签显示圆形图标
  • 统一的事件回调机制

安装方式

在插件市场搜索 xjx-tabs 安装,或者直接导入项目下的 uni_modules/xjx-tabs 文件夹。

基本用法

<template>
  <view>
    <xjx-tabs 
      :tabs="tabs"
      activeColor="#fc0005"
      @tab-click="onTabClick"
    />
  </view>
</template>

<script>
export default {
  data() {
    return {
      // 标签数据,包含子标签
      tabs: [
        {
          name: '全部', 
          icon: 'arrow-down', 
          activeIcon: 'arrow-up', // 下拉菜单打开时显示的图标
          subTabs: [
            {name: '全部', icon_text: '省拼宝'}, // 显示圆形图标
            {name: '拼xx'},
            {name: '淘b'},
            {name: '抖y'}
          ]
        },
        {name: '关注'},
        {name: '订阅'},
        {
          name: '我的', 
          icon: 'arrow-down',
          activeIcon: 'arrow-up',
          subTabs: [
            {name: '收藏'},
            {name: '历史'}
          ]
        }
      ]
    }
  },
  methods: {
    // 标签点击事件
    onTabClick(data) {
      console.log('标签点击:', data);
      // 主标签点击时,data包含:index, item, showDropdown
      // 子标签点击时,data包含:index, subIndex, item, subItem, isSubTab
    }
  }
}
</script>

属性说明

属性名 类型 默认值 说明
tabs Array [] 标签数据,包含子标签
activeColor String '#fc0005' 激活状态的颜色
inactiveColor String '#606266' 未激活状态的颜色

tabs 数据结构

[
  {
    name: '标签名称',
    icon: 'arrow-down', // 图标名称,使用uv-icon组件的图标
    activeIcon: 'arrow-up', // 下拉菜单打开时显示的图标,如果不设置则使用icon
    subTabs: [ // 子标签数组,如果没有子标签可以不设置此属性
      {
        name: '子标签名称',
        icon_text: '省拼宝' // 圆形图标内的文字,仅对第一个子标签有效,如果设置则显示圆形图标
      },
      {
        name: '子标签名称2'
      }
    ]
  }
]

事件说明

事件名 说明 返回参数
tab-click 标签点击事件 主标签点击时:{index, item, showDropdown}
子标签点击时:{index, subIndex, item, subItem, isSubTab}
dropdown-close 下拉菜单关闭事件 -

方法说明

方法名 说明 参数
setMainTab 设置当前主标签 index: Number
setSubTab 设置当前子标签 mainIndex: Number, subIndex: Number

示例

自定义颜色

<xjx-tabs 
  :tabs="tabs"
  activeColor="#007aff"
  inactiveColor="#999999"
/>

只有部分标签有下拉菜单

tabs: [
  {
    name: '全部', 
    icon: 'arrow-down', 
    activeIcon: 'arrow-up',
    subTabs: [
      {name: '全部', icon_text: '省拼宝'},
      {name: '拼xx'},
      {name: '淘b'}
    ]
  },
  {name: '关注'}, // 没有子标签
  {
    name: '我的', 
    icon: 'setting', // 使用不同的图标
    subTabs: [
      {name: '收藏'},
      {name: '历史'}
    ]
  }
]

自定义图标状态

tabs: [
  {
    name: '全部', 
    icon: 'arrow-down', 
    activeIcon: 'close', // 下拉菜单打开时显示关闭图标
    subTabs: [
      {name: '全部', icon_text: '热门'}, // 自定义圆形图标文字
      {name: '拼xx'},
      {name: '淘b'}
    ]
  }
]

注意事项

  1. 组件依赖于 uview-ui 的图标组件,请确保项目中已安装 uview-ui。
  2. 如需修改更多样式,可以通过覆盖组件的样式类来实现。
  3. 子标签的圆形图标只对每个下拉菜单的第一个子标签有效,通过设置 icon_text 属性来显示。

更新日志

v1.2.0 (2024-02-26)

  • 优化图标显示逻辑,支持设置不同状态的图标
  • 移除 showIcon 属性,改为判断是否有 icon 属性
  • 移除 circleText 属性,改为从 subTabs 的 icon_text 属性获取
  • 支持为每个下拉菜单的第一个子标签设置不同的圆形图标文字

v1.1.0 (2024-02-25)

  • 优化组件结构,支持任意主标签拥有子标签
  • 支持任意主标签显示下拉菜单和图标
  • 统一事件回调机制,使用tab-click事件替代原来的main-tab-click和sub-tab-select事件

v1.0.0 (2024-02-25)

  • 首次发布

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问