Skip to content

Tabs 标签页

YhTabsYhTabPane 用于将关联内容拆分到多个面板中,支持线形、卡片、边框卡片、分段器风格,以及自定义触发方式、动态增删、延迟渲染和主题变量覆盖。

将关联内容拆分到不同面板中,通过标签进行切换。

基础用法

通过 v-model 绑定当前激活的标签名。

用户管理
基础用法

触发方式

使用 trigger="hover" 可以改为悬停切换。

鼠标移入即可切换
触发方式

卡片风格

type="card"type="border-card" 提供不同的卡片式标签导航效果。

用户管理
卡片风格
用户管理
边框卡片

分段器风格

type="segment" 会将标签渲染成分段控制器样式。

日视图
分段器风格

标签位置

通过 tab-position 将导航放到上、右、下、左任意位置。

用户管理内容
标签位置

指示器与撑满

使用 active-colorinactive-colorindicator-widthindicator-height 自定义线形指示器;使用 stretch 让标签撑满可用宽度。

用户管理内容
自定义指示器
用户管理内容
撑满布局

可编辑标签

使用 editable,或者组合 closableaddable,可以实现动态增删标签。

标签 1 内容
可编辑标签
标签 1 内容
自定义添加触发器

切换前钩子

before-leave 可以通过返回 false 或拒绝 Promise 来阻止切换。

用户管理
切换前钩子

延迟渲染

YhTabPane 上设置 lazy 后,内容会在首次激活后才渲染。

即时渲染内容
延迟渲染

在 Nuxt 中使用

安装 @yh-ui/nuxt 后,可以在 Nuxt 3/4 中直接使用 YhTabsYhTabPane

内容 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'
draggable为拖拽排序预留的声明属性,当前实现尚未消费。booleanfalse
closable是否显示关闭按钮booleanfalse
addable是否显示内置添加按钮booleanfalse
editable等同于同时开启添加与关闭操作booleanfalse
before-leave切换前钩子(newName: string | number, oldName: string | number) => boolean | Promise<boolean>undefined
stretch是否撑满可用宽度booleanfalse
nav-class导航容器附加类名string''
content-class内容区域附加类名string''
indicator-width自定义指示器宽度string''
indicator-height自定义指示器高度string''
active-color激活态文字与指示器颜色string''
inactive-color未激活态文字颜色string''
trigger切换触发方式'click' | 'hover''click'
theme-overrides组件主题覆盖变量ComponentThemeVarsundefined

Tabs Events

事件说明参数
update:modelValue激活标签变化时触发(name: string | number) => void
tab-click点击标签头时触发(pane: YhTabPaneConfig, 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

插槽说明参数
defaultYhTabs 内部渲染的标签面板-
label自定义标签头内容。pane.name 在注册后会统一为 string{ pane: YhTabPaneConfig }
add-icon自定义添加按钮图标-

Tabs Expose

名称说明类型
addTab触发添加标签流程() => void
setActiveTab按名称激活指定标签(name: string | number) => void
activeTab当前激活标签的响应式引用。Ref<string | number>

TabPane Props

属性说明类型默认值
name唯一标签名string | number必填
label标签标题文本string''
disabled是否禁用booleanfalse
closable是否允许该面板被关闭booleanundefined
lazy是否首次激活后才渲染内容booleanfalse
icon标签前置图标类名string''
theme-overrides组件主题覆盖变量ComponentThemeVarsundefined

TabPane Events

当前组件未暴露组件事件。

TabPane Slots

插槽说明参数
default面板内容-

TabPane Expose

当前组件未暴露公开实例方法或属性。

类型导出

类型说明
YhTabsPropsTabs Props 类型
YhTabsEmitsTabs Emits 类型
YhTabsSlotsTabs Slots 类型
YhTabsExposeTabs Expose 类型
YhTabsType标签风格联合类型
YhTabsPosition标签位置联合类型
YhTabPaneConfig注册到 Tabs 的面板配置类型
YhTabPanePropsTabPane Props 类型
YhTabPaneSlotsTabPane Slots 类型
YhTabsInstanceTabs 实例类型
YhTabPaneInstanceTabPane 实例类型

YhTabPaneConfig 对象定义

YhTabs 在内部注册和事件回调中使用的面板配置类型如下。需要注意的是,源码会在注册时将 name 统一转换为 string

ts
interface YhTabPaneConfig {
  name: string
  label: string
  disabled?: boolean
  closable?: boolean
  lazy?: boolean
  icon?: string
}

主题变量

YhTabsYhTabPane 支持 themeOverrides,并在样式中消费以下专属 CSS 变量。

变量说明默认值
--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.