组件 · 数据展示

PageHeader 页头

页面标题区:返回、标题、副标题、额外操作与页脚槽位;用于列表/详情/设置页头部。

入口 @selrux/ui/page-header · 源码 src/components/page-header/index.ts · 12 个组件 · 发布状态 preview

使用建议

  • 避免:用 PageHeader 替代承担完整后台布局职责
  • 限制:未标 stable

引入

tsx
import {
  PageHeader,
  PageHeaderAvatar,
  PageHeaderBack,
  PageHeaderBody,
  PageHeaderContent,
  PageHeaderExtra,
  // …共 12 个导出
} from '@selrux/ui/page-header';

结构与组合

PageHeader 通过子组件组合页头,没有 title、extra 这类快捷属性。 按页面需要选择标题区、内容区与页尾;只有标题时,不必创建空的 Body 或 Footer。

tsx
import {
  PageHeader, PageHeaderHeader, PageHeaderMain, PageHeaderHeading,
  PageHeaderTitle, PageHeaderSubtitle, PageHeaderBody, PageHeaderFooter,
} from '@selrux/ui/page-header';

/** 业务页面自行选择语义层级,并按需组合三区。 */
export function ProjectHeader() {
  return (
    <PageHeader bordered>
      <PageHeaderHeader>
        <PageHeaderMain>
          <PageHeaderHeading>
            <PageHeaderTitle level={1}>项目详情</PageHeaderTitle>
            <PageHeaderSubtitle>项目编号与简短说明</PageHeaderSubtitle>
          </PageHeaderHeading>
        </PageHeaderMain>
      </PageHeaderHeader>
      <PageHeaderBody>页面摘要或可滚动内容</PageHeaderBody>
      <PageHeaderFooter>补充信息或页签</PageHeaderFooter>
    </PageHeader>
  );
}
  • Header 是顶部固定区,可先放面包屑,再放 Main。 Main 推荐按 Back → Avatar → Heading → Extra 组织。
  • Heading 将标题与副标题成组。有 Extra 时,操作区在上、标题区在下;没有 Extra 时,返回、头像与标题同行。
  • Body 在父级高度受限时独立滚动;Footer 保持在内容区下方,不提供浏览器视口吸底行为。

按场景查看:详情导航 · 实体标识 · 固定头尾 · 保存状态 · 窄屏适配。

演练场

调节下方可实现的字面量属性,实时预览真实组件。函数、Portal、样式逃生口等见代码演示与 API 表。

调节尺寸与底部分隔线。返回和编辑只更新本地演示状态;下方源码包含完整组合。

订单详情

SO-20261023-001

示例订单已创建,等待处理。

代码演示

基础用法

只需要标题时省略 Body、Footer 与返回按钮;bordered 只显示底部分隔线。

项目设置

管理项目的基本信息与协作方式

面包屑与返回

onBack 由调用方接管;点击返回或上级路径会显示反馈,不会离开文档页。

订单详情

SO-20261023-001

当前为订单详情演示;可点击返回或面包屑。

头像、状态与操作

Avatar 放实体标识,Extra 放页级操作;有操作区时标题独占下一行。

DS

设计系统

PRJ-024 · 基础组件维护

进行中负责人:林舟 · 更新于 2026-10-23
关注后可在本地演示中查看选中状态。

固定头尾与内容滚动

父级设置明确高度后,只有 Body 滚动;聚焦内容区可用方向键滚动。

交付检查记录

12 条示例记录

检查项 01
确认组件说明、交互反馈与页面展示一致。
检查项 02
确认组件说明、交互反馈与页面展示一致。
检查项 03
确认组件说明、交互反馈与页面展示一致。
检查项 04
确认组件说明、交互反馈与页面展示一致。
检查项 05
确认组件说明、交互反馈与页面展示一致。
检查项 06
确认组件说明、交互反馈与页面展示一致。
检查项 07
确认组件说明、交互反馈与页面展示一致。
检查项 08
确认组件说明、交互反馈与页面展示一致。
检查项 09
确认组件说明、交互反馈与页面展示一致。
检查项 10
确认组件说明、交互反馈与页面展示一致。
检查项 11
确认组件说明、交互反馈与页面展示一致。
检查项 12
确认组件说明、交互反馈与页面展示一致。

加载、禁用与失败恢复

先保存,再用下方按钮模拟响应;保存中禁止返回与重复提交,失败后可重试。

编辑项目信息

仅演示状态变化,不会发送请求。

六档尺寸与分隔线

size 影响字号和间距,不改变标题语义;切换 bordered 对比底部分隔线。

项目设置

size="xs"

项目设置

size="sm"

项目设置

size="md"

项目设置

size="lg"

项目设置

size="xl"

项目设置

size="2xl"

长标题与窄屏

切换“手机”查看换行;操作区显式允许折行,dir 可切换布局方向与返回箭头。

跨团队组件规范与无障碍体验改进项目的交付验收记录

SELRUX / DESIGN-SYSTEM-ACCESSIBILITY-20261023-REVIEW

长标题保留完整内容,不用省略号隐藏关键信息。

API

属性覆盖:示例用到 4 / 4 个自有属性(100%)

由 scripts/demo-coverage.mjs 统计,不含 className / style / 原生透传属性与纯转发事件。

PageHeader

解析本域尺寸与描边;三区滚动布局由 CSS 承担。

属性说明类型默认值
size-"xs" | "sm" | "md" | "lg" | "xl" | "2xl"-
bordered-boolean-

另有 279 项原生属性与事件继承自 HTMLAttributes,原样透传。

PageHeaderAvatar

为标识容器添加局部样式;限制溢出放大。

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderBack

为返回按钮添加局部样式类;行为与名称仍在 headless。

属性说明类型默认值
onBack返回请求;缺失时开发期诊断并禁用。((event: MouseEvent<HTMLButtonElement>) => void)-

另有 288 项原生属性与事件继承自 ButtonHTMLAttributes / HTMLAttributes,原样透传。

PageHeaderBody

中间可滚动内容区;未渲染不占位。

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderContent

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderExtra

为操作区添加局部样式;逻辑末端对齐由 CSS 承担。

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderFooter

底部固定区样式;未渲染不占位。

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderHeader

顶部固定区样式;未渲染不占位。

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderHeading

标题成组容器:Title 与 Subtitle 同行(对照 Naive);无头像时可内嵌 Back。 有头像时 Back 应放在 Main 内、Avatar 左侧,不要放进本容器。

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderMain

主行布局:有 Extra 时工具条 + 标题下行;推荐源顺序 Back → Avatar → Heading → Extra,不自动重排 children。

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderSubtitle

为副标题添加局部样式;默认自然换行。

无自有属性;其余 279 项原生属性继承自 HTMLAttributes。

PageHeaderTitle

为标题添加局部样式;语义层级仍由 level 决定。

属性说明类型默认值
level默认 h1,由页面作者显式设置层级。1 | 2 | 3 | 4 | 5 | 6h1

另有 279 项原生属性与事件继承自 HTMLAttributes,原样透传。

导出类型:PageHeaderAvatarProps、PageHeaderBackProps、PageHeaderBodyProps、PageHeaderContentProps、PageHeaderExtraProps、PageHeaderFooterProps、PageHeaderHeaderProps、PageHeaderHeadingProps、PageHeaderMainProps、PageHeaderProps、PageHeaderSize、PageHeaderSubtitleProps、PageHeaderTitleProps

接入与无障碍

  • PageHeaderBack 需要显式提供 onBack;不传时会禁用并在开发期提示。 组件不会调用路由或 history.back(),独立打开详情页时应由应用提供稳定的列表回退地址。
  • 有未保存内容时,由应用拦截返回;提交中可设置 disabled。 失败提示、重试与草稿保留都由应用负责,页头只提供布局。
  • size 支持 xs、sm、md、lg、xl、2xl;未指定时读取最近的 ConfigProvider,最后回退 md。bordered 默认为 false,只控制根节点底部分隔线。
  • PageHeaderTitle 默认渲染 h1,使用 level 匹配页面层级。 本页示例放在三级示例标题下,因此使用 level=4;独立业务页通常使用 level=1。
  • 返回按钮应有具体的可访问名称;头像图片需要 alt,已有相同文字时可用空 alt 避免重复朗读。 Extra 不会自动添加工具栏角色,普通按钮组不必额外声明 toolbar。
  • 父级指定高度后 Body 才能独立滚动;flex 或 grid 容器还需允许收缩(min-block-size: 0)。 可滚动区域应提供可访问名称与键盘焦点。只作普通页头时无需固定高度。
  • 标题与副标题支持自然换行。Extra 默认不换行,窄屏多操作应使用菜单收纳,或像长标题示例一样显式允许操作折行。
  • PageHeaderContent 是 Body 的兼容别名,新代码统一使用 PageHeaderBody。 页签行为复用 Tabs;完整后台壳使用 AdminLayout。