ProComponents, templates & AI tooling
HeroUI
27.7k

Tabs 标签页

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

引入

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

用法

查看项目概览与近期活动。

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

export function Basic() {
  return (
    <Tabs className="w-full max-w-md">

组件结构

导入 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>
)

垂直布局

账户 Settings

管理你的账户信息与偏好设置。

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

export function Vertical() {
  return (
    <Tabs className="w-full max-w-lg" orientation="vertical">

禁用 Tab

此标签页已启用,可以选择。

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

export function Disabled() {
  return (
    <Tabs className="w-full max-w-md">

带分隔线

在每个 <Tabs.Tab> 内(第一项除外)添加 <Tabs.Separator />,用于在标签之间显示分隔线。

查看项目概览与近期活动。

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

export function WithSeparator() {
  return (
    <Tabs className="w-full max-w-md">

自定义样式

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

export function CustomStyles() {
  return (
    <Tabs className="w-full max-w-lg text-center">

Secondary 变体

查看项目概览与近期活动。

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

export function Secondary() {
  return (
    <Tabs className="w-full max-w-md" variant="secondary">

Secondary 变体(垂直)

账户 Settings

管理你的账户信息与偏好设置。

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

export function SecondaryVertical() {
  return (
    <Tabs className="w-full max-w-lg" orientation="vertical" variant="secondary">

自定义渲染函数

"use client";

import {Tabs} from "@heroui/react";
import Link from "next/link";

样式

传入 Tailwind CSS 类

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

function CustomTabs() {
return (
  <Tabs className="w-full max-w-lg text-center">

CSS 类

Tabs 使用以下 CSS 类:

基础类

  • .tabs — Tabs 根容器
  • .tabs__list-container — 标签列表容器外层包裹
  • .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 元素。

本页目录