# t-tabs
Tabs 标签页
t-tabs 组件介绍
t-tabs 用于组织和管理多个页面的切换,支持横向滚动、自定义滑块样式和右侧图标。
t-tabs 平台兼容
| Harmony | H5 | Android | iOS | 小程序 | UTS |
|---|---|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
t-tabs 基础用法
基础用法参考 demo/tabs/tabs.uvue,通过 t-tabs-item 子组件定义标签项。
vue
<template>
<view class="p-15">
<t-card title='Tabs 标签导航'
class="r-10 mb-15"
sub-title="组织和管理多个页面的切换"></t-card>
<t-section title='基础使用-type-size'
class="r-10 mb-15"></t-section>
<t-tabs :class="[`trm mb-15 tvg`]"
bar-class="twhr-10"
:current="current"
@change="ontabschange"
type="primary"
size="large">
<t-tabs-item v-for="(item,i) in tabsList2"
:key="i"
:value="i"
:title="item.title"
:disabled="item.disabled==null?false:item.disabled"
:badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-tabs :class="[`trm mb-15 tvg`]"
:current="current"
@change="ontabschange"
type="error"
size="medium">
<t-tabs-item v-for="(item,i) in tabsList2"
:key="i"
:value="i"
:title="item.title"
:disabled="item.disabled==null?false:item.disabled"
:badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-tabs :class="[`trm mb-15 tvg`]"
:current="current"
@change="ontabschange"
type="warning"
size="small">
<t-tabs-item v-for="(item,i) in tabsList2"
:key="i"
:value="i"
:title="item.title"
:disabled="item.disabled==null?false:item.disabled"
:badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-tabs :class="[`trm mb-15 tvg`]"
:current="current"
@change="ontabschange"
type="success"
size="mini">
<t-tabs-item v-for="(item,i) in tabsList2"
:key="i"
:value="i"
:title="item.title"
:disabled="item.disabled==null?false:item.disabled"
:badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-section title='禁用滚动+设置主题'
class="r-10 mb-15"></t-section>
<t-tabs :class="[`trm mb-15 tvg`]"
:current="current"
@change="ontabschange"
type="success"
size="large"
:scrollable="false">
<t-tabs-item v-for="(item,i) in tabsList1"
:key="i"
:value="i"
:title="item.title"
:disabled="item.disabled==null?false:item.disabled"
:badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-section title='滚动条插槽+右侧菜单按钮'
class="r-10 mb-15"></t-section>
<t-tabs :class="[`trm mb-15 tvg`]"
:current="current"
@change="ontabschange"
type="primary"
size="large"
:scrollable="false"
rightIcon="list"
bar-class="bgn!"
right-icon-class="s-30!">
<template v-slot:bar>
<image class="w-15 h-5"
src="/static/image/tabsline.png"></image>
</template>
<t-tabs-item v-for="(item,i) in tabsList1"
:key="i"
:value="i"
:title="item.title"
:disabled="item.disabled==null?false:item.disabled"
:badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<tui-theme-switch></tui-theme-switch>
</view>
</template>
<script setup>
import { ref } from 'vue'
import { onMounted } from 'vue'
type TuiTabsOption = {
disabled ?: boolean
dot ?: boolean
title : string
value ?: number
}
type TuiTestTabsList = {
list : TuiTabsOption[]
list1 : TuiTabsOption[]
list2 : TuiTabsOption[]
list5 : TuiTabsOption[]
}
const lists : TuiTestTabsList = {
"list": [
{
"title": "关注"
},
{
"title": "推荐"
},
{
"title": "电影"
},
{
"title": "科技"
},
{
"title": "音乐"
},
{
"title": "美食"
},
{
"title": "文化"
},
{
"title": "财经"
},
{
"title": "手工"
}
],
"list1": [
{
"title": "关注",
"dot": false,
"value": 5
},
{
"title": "推荐",
"dot": true,
"value": 5
},
{
"title": "电影"
},
{
"title": "科技"
},
{
"title": "音乐"
},
{
"title": "美食"
},
{
"title": "文化"
},
{
"title": "财经"
},
{
"title": "手工"
}
],
"list2": [
{
"title": "关注",
"disabled": false,
"dot": false,
"value": 0
},
{
"title": "推荐",
"disabled": false,
"dot": true,
"value": 1
},
{
"title": "电影",
"disabled": false,
"dot": true,
"value": 0
},
{
"title": "科技",
"disabled": false,
"dot": false,
"value": 0
}
],
"list5": [
{
"title": "关注",
"disabled": false,
"dot": false,
"value": 0
},
{
"title": "推荐",
"disabled": false,
"dot": true,
"value": 1
},
{
"title": "电影",
"disabled": false,
"dot": true,
"value": 0
},
{
"title": "科技",
"disabled": true,
"dot": false,
"value": 1
},
{
"title": "音乐",
"disabled": false,
"dot": false,
"value": 5
},
{
"title": "美食",
"disabled": false,
"dot": false,
"value": 0
},
{
"title": "文化",
"disabled": false,
"dot": false,
"value": 0
},
{
"title": "运动户外",
"disabled": false,
"dot": false,
"value": 0
},
{
"title": "手工",
"disabled": false,
"dot": false,
"value": 0
}
]
}
const current = ref(2)
const rowsSize = ref([['18px', '300px'], ['18px', '150px'], ['18px', '250px'], ['18px', '200px']])
const tabsList1 = ref<TuiTabsOption[]>([])
const tabsList2 = ref<TuiTabsOption[]>([])
const ontabschange = (cur : number) => {
current.value = cur
}
const iconClick = () => {
uni.showToast({
title: '点击右侧插槽'
})
}
onLoad(() => {
tabsList1.value = lists.list2
tabsList2.value = lists.list5
})
</script>t-tabs Props
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
path | 点击组件后跳转的页面路径;为空时仅响应事件 | string | '' |
hover | 是否启用点击效果 | boolean | false |
type | 组件主题类型,可选 info、primary、error、warning、success | string | '' |
disabled | 是否禁用 | boolean | false |
effect | 组件显示主题,可选 normal、dark、light、plain | string | 'normal' |
size | 组件尺寸,可选 large、medium、small、mini | string | 'medium' |
barClass | 滑块的样式,对应外部类 bar-class | string | '' |
current | 当前滑块所在的索引 | number | 1 |
scrollable | 是否可滚动 | boolean | false |
rightIcon | 右侧图标名称 | string | '' |
rightIconClass | 右侧图标的样式,对应外部类 right-icon-class | string | '' |
t-tabs Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
change | 当标签切换时触发 | value: number |
click | 点击时触发 | - |
transitionend | 动画结束时触发 | - |
initFinished | 组件初始化完成时触发,返回组件节点信息 | - |
touchstart | 触摸开始时触发 | - |
touchend | 触摸结束时触发 | - |
touchmove | 触摸移动时触发 | - |
touchcancel | 触摸取消时触发 | - |
外部类
| 类名 | 说明 |
|---|---|
bar-class | 滑块样式 |
right-icon-class | 右侧图标样式 |
t-tabs Slots
| 插槽名 | 说明 |
|---|---|
default | 默认插槽,放置 t-tabs-item 子组件 |
right | 右侧内容插槽,默认显示右侧图标 |
bar | 滑块内容插槽,可自定义滑块样式 |