开发预览 更新于 2026-05-10

Tabs 标签页

三种视觉变体的 tabs,支持受控与非受控、items 数组式 API、对齐方式可控。

基础用法

items 数组定义 tab 列表,v-model 绑定当前激活值。默认 variant="line",激活项底部带 accent 色横线。

在「账户」页面,可以修改昵称、头像、邮箱。
<script setup lang="ts">
import { ref } from 'vue';
import { CfTabs } from '@chufix-design/vue';

const tab = ref('account');
const items = [
{ value: 'account', label: '账户' },
{ value: 'security', label: '安全' },
{ value: 'notifications', label: '通知' },
{ value: 'billing', label: '账单', disabled: true },
];
</script>

<template>
<CfTabs v-model="tab" :items="items">
  <template #default="{ active }">
    <div v-if="active === 'account'">在「账户」页面…</div>
    <div v-if="active === 'security'">在「安全」页面…</div>
    <div v-if="active === 'notifications'">在「通知」页面…</div>
  </template>
</CfTabs>
</template>
import { useState } from 'react';
import { CfTabs, CfTabPanel } from '@chufix-design/react';

const items = [
{ value: 'account', label: '账户' },
{ value: 'security', label: '安全' },
{ value: 'notifications', label: '通知' },
{ value: 'billing', label: '账单', disabled: true },
];

export default function Demo() {
const [tab, setTab] = useState('account');
return (
  <CfTabs value={tab} onChange={setTab} items={items}>
    {({ active }) => (
      <>
        <CfTabPanel value="account" active={active}>在「账户」页面…</CfTabPanel>
        <CfTabPanel value="security" active={active}>在「安全」页面…</CfTabPanel>
        <CfTabPanel value="notifications" active={active}>在「通知」页面…</CfTabPanel>
      </>
    )}
  </CfTabs>
);
}

视觉变体

line 是默认下划线样式;segmented 是按钮组式分段控件;pill 是胶囊形单选式。

<CfTabs v-model="a" :items="items" variant="line" />
<CfTabs v-model="b" :items="items" variant="segmented" />
<CfTabs v-model="c" :items="items" variant="pill" />
<CfTabs value={a} onChange={setA} items={items} variant="line" />
<CfTabs value={b} onChange={setB} items={items} variant="segmented" />
<CfTabs value={c} onChange={setC} items={items} variant="pill" />

尺寸

3 档尺寸跟随密度系统 --control-h-sm/md/lg

<CfTabs v-model="sm" :items="items" size="sm" />
<CfTabs v-model="md" :items="items" size="md" />
<CfTabs v-model="lg" :items="items" size="lg" />
<CfTabs items={items} size="sm" defaultValue="one" />
<CfTabs items={items} size="md" defaultValue="one" />
<CfTabs items={items} size="lg" defaultValue="one" />

API

Prop类型默认值说明
modelValue (Vue) / value (React)string当前激活 tab 的 value(受控)
defaultValue (React)string初始激活 tab 的 value(非受控)
itemsTabsItem[][]tab 列表,每项 {value, label, disabled?}
variant'line' | 'segmented' | 'pill''line'视觉变体
size'sm' | 'md' | 'lg''md'高度与字号
align'start' | 'center' | 'end' | 'stretch''start'tab 列表对齐方式

默认插槽

Vue 默认插槽接收作用域参数 { active },根据 active 渲染对应内容。 React 通过 children 接受函数 ({ active }) => ReactNode 并配合 <CfTabPanel> 守卫。

反馈与讨论

Tabs 标签页 的讨论

0
0 / 600
一键发送
正在加载评论...