Skip to content

r-tabs

r-tabs 选项卡组件,用于在不同的内容区域之间进行切换。

示例

vue
<template>
  <r-config-provider :themeName="themeName">
    <page-header title="标签页"></page-header>
    <r-divider content-position="left">基本使用</r-divider>
    <r-tabs v-model:active="tabActive" @change="onChange">
      <r-tab title="标签 1">内容 1</r-tab>
      <r-tab title="标签 2">内容 2</r-tab>
      <r-tab title="标签 3">内容 3</r-tab>
      <r-tab title="标签 4">内容 4</r-tab>
    </r-tabs>
    <r-divider content-position="left">通过名称匹配</r-divider>
    <r-tabs v-model:active="activeName">
      <r-tab title="标签 1" name="a">内容 1</r-tab>
      <r-tab title="标签 2" name="b">内容 2</r-tab>
      <r-tab title="标签 3" name="c">内容 3</r-tab>
    </r-tabs>
    <r-divider content-position="left">标签栏滚动 </r-divider>
    <r-tabs v-model:active="active">
      <r-tab v-for="index in 8" :key="index" :title="'标签 ' + index">
        内容 {{ index }}
      </r-tab>
    </r-tabs>

    <r-divider content-position="left">禁用标签 </r-divider>
    <r-tabs v-model:active="active">
      <r-tab title="标签 1">内容 1</r-tab>
      <r-tab title="标签 2" disabled>内容 2</r-tab>
      <r-tab title="标签 3">内容 3</r-tab>
    </r-tabs>

    <r-divider content-position="left">样式风格 </r-divider>
    <r-tabs v-model:active="active" type="card" :duration="0">
      <r-tab title="标签 1">内容 1</r-tab>
      <r-tab title="标签 2">内容 2</r-tab>
      <r-tab title="标签 3">内容 3</r-tab>
    </r-tabs>

    <r-divider content-position="left">收缩布局 </r-divider>

    <r-tabs v-model:active="active" shrink>
      <r-tab v-for="index in 4" :key="index" :title="'标签 ' + index">
        内容 {{ index }}
      </r-tab>
    </r-tabs>
    <r-divider content-position="left">自定义标签 </r-divider>

    <r-tabs v-model:active="active">
      <template #title="{ item, isActive, index }">
        <view
          style="
            display: flex;
            flex-direction: row;
            align-items: center;
            gap: 12rpx;
          "
        >
          <r-icon :name="index ? 'more-o' : 'gift-o'" color="inherit"></r-icon>
          {{ item.title }}
        </view>
      </template>
      <r-tab v-for="index in 2" :title="'标题' + index">
        内容 {{ index }}
      </r-tab>
    </r-tabs>
  </r-config-provider>
</template>

<script setup>
import { ref } from "vue";
import useTheme from "@/hooks/useTheme";
const { themeName } = useTheme();
const activeName = ref("a");
const tabActive = ref(0);
const active = ref(0);
const onChange = (e) => {
  console.log("e", e);
};
</script>

API

Tabs Props

名称说明类型默认值可选值
active绑定当前选中标签的标识符Number|String0-
type样式风格类型Stringlinecard
color标签主题色String#1989fa
background标签栏背景色Stringvar(--r-tabs-nav-background)
duration动画时间,单位毫秒Number300
lineWidth底部条宽度String80rpx
lineHeight底部条高度String6rpx
animated是否开启切换标签内容时的转场动画Booleanfalse
border是否显示标签栏外边框,仅在 type="line" 时有效Booleanfalse
ellipsis是否省略过长的标题文字Booleantrue
sticky是否使用粘性布局Booleanfalse
shrink是否开启左侧收缩布局Booleanfalse
swipeThreshold滚动阈值,标签数量超过阈值且总宽度超过标签栏宽度时开始横向滚动Number5
beforeChange切换标签前的回调函数,返回 false 可阻止切换,支持返回 PromiseFunction
themeNamer-theme 的主题Stringdefault

Tab Props

名称说明类型默认值可选值
title标题String--
dot是否在标题右上角显示小红点Booleanfalsetrue
disabled是否禁用标签Booleanfalsetrue
badge图标右上角徽标的内容String
name标签名称,作为匹配的标识符String | Number
showZeroBadge当 badge 为数字 0 时,是否展示徽标Booleantrue
themeNamer-theme 的主题名称Stringdefault

Tabs Slots

名称说明参数
titletitle 处插槽item
navLeftnav 左侧-
navRightnav 右侧-
navBottomnav 下侧-
default默认插槽

Tabs Events

名称说明回调参数
update:active当前激活的标签改变时触发name
change当前激活的标签改变时触发name,title
rendered标签内容首次渲染时触发name,title
clickTab点击标签时触发

更多组件,请前往rainui