Skip to content

Tabs 标签页

分隔内容上有关联但属于不同类别的数据集合。融合了 Element Plus、Naive UI、Ant Design 各家之长,并首创了 Segment 分段器风格与切换钩子。

基础用法

基础的、简洁的标签页。通过 v-model 绑定当前激活的标签名。

用户管理
基础用法

触发器自定义

通过 trigger 属性指定标签切换的触发方式。可选值:click(默认)、hover

鼠标移入标签即可切换
触发器自定义

卡片风格

设置 type="card" 可以使标签改变为标签卡片样式。

用户管理
卡片风格

带边框卡片

设置 type="border-card" 呈现带边框的卡片样式。

用户管理
带边框卡片

分段器风格

设置 type="segment" 呈现 iOS 风格的分段器效果,适合用于视图切换。

日视图内容
分段器风格

标签位置

通过 tab-position 设置标签的位置。可选值:toprightbottomleft

用户管理内容
标签位置

自定义指示器样式

默认指示器为短样式(40px)居中显示。通过 indicator-widthindicator-height 控制指示器尺寸,设置为 auto 可让指示器铺满标签。通过 active-colorinactive-color 自定义颜色。

用户管理内容
自定义指示器样式

标签撑满

设置 stretch 可以使标签撑满容器宽度。

用户管理内容
标签撑满

动态增减标签

设置 editable(等同于 closable + addable)使标签可动态增减。

Tab 1 Content
动态增减标签

自定义添加触发器

通过外部按钮触发添加标签页,而不使用组件内置的 + 按钮。设置 :addable="false" 隐藏内置按钮,然后自行调用添加逻辑。

Tab 1 Content
自定义添加触发器

切换前钩子

通过 before-leave 钩子函数控制标签切换。返回 falsePromise.reject 可阻止切换。

用户管理
切换前钩子

延迟渲染

设置 lazy 可以延迟渲染标签内容,只有在首次激活时才会渲染。

即时加载的内容
延迟渲染

在 Nuxt 中使用

组件已完美适配 Nuxt 3,支持自动导入与 SSR。

Content 1
Nuxt 适配

API

Tabs Props

属性名说明类型默认值
model-value / v-model绑定值,当前激活的标签名string | number''
type标签类型'line' | 'card' | 'border-card' | 'segment''line'
tab-position标签位置'top' | 'right' | 'bottom' | 'left''top'
closable是否可关闭booleanfalse
addable是否可新增booleanfalse
editable是否可编辑(同时可关闭和新增)booleanfalse
draggable是否可拖拽排序booleanfalse
before-leave切换前钩子,返回 false 可阻止切换(newName, oldName) => boolean | Promise<boolean>
stretch标签是否撑满容器booleanfalse
nav-class标签栏自定义类名string''
content-class内容区自定义类名string''
indicator-width指示器宽度(水平方向为长度,垂直方向为粗细),设为 auto 可铺满标签string''(CSS 变量默认 40px
indicator-height指示器高度(垂直方向为长度,水平方向为粗细),设为 auto 可铺满标签string''(CSS 变量默认 20px
active-color选中态颜色(文字和指示器)string''
inactive-color未选中态颜色string''
trigger触发方式'click' | 'hover''click'

Tabs Events

事件名说明类型
tab-click点击标签时触发(pane: TabPaneConfig, ev: Event) => void
tab-change激活标签改变时触发(name: string | number) => void
tab-remove点击关闭按钮时触发(name: string | number) => void
tab-add点击新增按钮时触发() => void
tab-drag-end拖拽结束时触发(names: (string | number)[]) => void

Tabs Slots

插槽名说明参数
defaultTabPane 内容
label自定义标签标题{ pane: TabPaneConfig }
add-icon自定义新增按钮图标

Tabs Exposes

通过 ref 可以获取 Tabs 实例并调用以下方法:

方法名说明类型
addTab触发添加标签页事件(需配合 @tab-add 使用)() => void
setActiveTab激活指定标签(name: string | number) => void
activeTab当前激活的标签名(响应式)Ref<string | number>

TabPane Props

属性名说明类型默认值
name唯一标识(必填)string | number
label标签标题string''
disabled是否禁用booleanfalse
closable是否可关闭(覆盖 Tabs 的设置)booleanundefined
lazy是否延迟渲染(首次激活后渲染)booleanfalse
icon图标类名string''

TabPane Slots

插槽名说明参数
default标签内容

主题变量

变量名说明默认值
--yh-tabs-header-height标签栏高度40px
--yh-tabs-active-color激活态颜色var(--yh-color-primary)
--yh-tabs-text-color文字颜色var(--yh-text-color-primary)
--yh-tabs-disabled-color禁用态颜色var(--yh-text-color-disabled)
--yh-tabs-border-color边框颜色var(--yh-border-color-light)
--yh-tabs-indicator-width指示器宽度(水平布局)40px
--yh-tabs-indicator-height指示器高度(垂直布局)20px

Released under the MIT License.