JGuang / HeroUI

Tabs 标签页

Tabs 将内容组织为多个区块,并允许用户在它们之间导航。

引入

import { Tabs } from '@heroui/react';

用法

HeroUI 示例

组件结构

导入 Tabs 组件后,可通过点语法访问所有子部分。

import { Tabs } from '@heroui/react';

export default () => (
  <Tabs>
    <Tabs.ListContainer>
      <Tabs.List aria-label="Options">
        <Tabs.Tab>
          <Tabs.Separator /> {/* Optional */}
          <Tabs.Indicator />
        </Tabs.Tab>
      </Tabs.List>
    </Tabs.ListContainer>
    <Tabs.Panel/>
  </Tabs>
)

垂直布局

HeroUI 示例

溢出

当标签列表超出可用空间时,Tabs.ListContainer 会自动渲染滚动箭头与渐隐边缘,使用户可以导航到被隐藏的标签。水平与垂直方向均支持此行为。

HeroUI 示例

禁用 Tab

HeroUI 示例

带分隔线

在每个 内(第一项除外)添加,用于在标签之间显示分隔线。

HeroUI 示例

自定义样式

HeroUI 示例

Secondary 变体

HeroUI 示例

Secondary 变体(垂直)

HeroUI 示例

自定义渲染函数

HeroUI 示例

样式

传入 Tailwind CSS 类

      Daily
      Weekly
      Bi-Weekly
      Monthly
    
  
  
    <h3 className="mb-2 font-semibold">Daily</h3>
    Manage your daily tasks and goals.
  
  
    <h3 className="mb-2 font-semibold">Weekly</h3>
    Manage your weekly tasks and goals.
  
  
    <h3 className="mb-2 font-semibold">Bi-Weekly</h3>
    Manage your bi-weekly tasks and goals.
  
  
    <h3 className="mb-2 font-semibold">Monthly</h3>
    Manage your monthly tasks and goals.
  

); } `} />

CSS 类

Tabs 使用以下 CSS 类:

基础类

  • .tabs — Tabs 根容器
  • .tabs__list-container — 标签列表容器外层包裹
  • .tabs__list-container__scroller — 标签列表的可滚动容器(处理溢出与渐隐边缘)
  • .tabs__list-container__scroll-prev — 向前(左 / 上)滚动的箭头按钮
  • .tabs__list-container__scroll-next — 向后(右 / 下)滚动的箭头按钮
  • .tabs__list — 标签列表容器
  • .tabs__tab — 单个标签按钮
  • .tabs__separator — 标签之间的分隔线
  • .tabs__panel — 标签面板内容
  • .tabs__indicator — 标签指示器

方向属性

  • .tabs[data-orientation="horizontal"] — 水平标签布局(默认)
  • .tabs[data-orientation="vertical"] — 垂直标签布局

变体类

  • .tabs--secondary — Secondary 变体,使用下划线指示器

交互状态

组件同时支持 CSS 伪类与 data 属性:

  • 已选中:[aria-selected="true"]
  • 悬停::hover 或 [data-hovered="true"]
  • 焦点::focus-visible 或 [data-focus-visible="true"]
  • 禁用:[aria-disabled="true"]

API 参考

Tabs Props

Prop类型默认值描述
variant"primary" | "secondary""primary"视觉样式变体。Primary 使用填充指示器,Secondary 使用下划线指示器
orientation"horizontal" | "vertical""horizontal"标签布局方向
selectedKeystring-受控选中标签的 key
defaultSelectedKeystring-默认选中标签的 key
onSelectionChange(key: Key) => void-选中变化事件处理函数
classNamestring-附加的 CSS 类
renderDOMRenderFunction<keyof React.JSX.IntrinsicElements, TabsRenderProps>-使用自定义渲染函数覆盖默认 DOM 元素。

Tabs.List Props

Prop类型默认值描述
aria-labelstring-标签列表的无障碍标签
classNamestring-附加的 CSS 类
renderDOMRenderFunction<keyof React.JSX.IntrinsicElements, TabListRenderProps>-使用自定义渲染函数覆盖默认 DOM 元素。

Tabs.Tab Props

Prop类型默认值描述
idstring-标签唯一标识
isDisabledbooleanfalse是否禁用该标签
classNamestring-附加的 CSS 类
renderDOMRenderFunction<keyof React.JSX.IntrinsicElements, TabRenderProps>-使用自定义渲染函数覆盖默认 DOM 元素。

Tabs.Separator Props

Prop类型默认值描述
classNamestring-附加的 CSS 类

Tabs.Panel Props

Prop类型默认值描述
idstring-与对应 Tab id 匹配的面板标识
classNamestring-附加的 CSS 类
renderDOMRenderFunction<keyof React.JSX.IntrinsicElements, TabPanelRenderProps>-使用自定义渲染函数覆盖默认 DOM 元素。

本地来源: vendor/zh/react/components/(navigation)/tabs.mdx

文档根据 HeroUI v3 固定提交生成,已调整内部链接与交互预览以适配 JGuang。

On this page