Skip to content

PageHeader 页头

如果页面的路径比较简单,推荐使用页头组件而非面包屑组件。

ts
import { createApp } from 'vue'
import { PageHeader as ElPageHeader } from '@szhn/dh-design-pc'

const app = createApp()
app.use(ElPageHeader)

完整示例

适合详情页、工作台等信息更完整的场景,可同时组合面包屑、标题区、操作区与默认内容区。

<template>
  <div aria-label="页头完整示例">
    <el-page-header @back="onBack">
      <template #breadcrumb>
        <el-breadcrumb separator="/">
          <el-breadcrumb-item>首页</el-breadcrumb-item>
          <el-breadcrumb-item>项目管理</el-breadcrumb-item>
          <el-breadcrumb-item>项目详情</el-breadcrumb-item>
        </el-breadcrumb>
      </template>

      <template #content>
        <div class="content-row">
          <div class="avatar">R</div>
          <span class="title">数字海南一体化平台</span>
          <span class="subtitle">政务协同项目</span>
          <el-tag>进行中</el-tag>
        </div>
      </template>

      <template #extra>
        <div class="extra-row">
          <el-button>打印</el-button>
          <el-button type="primary">编辑</el-button>
        </div>
      </template>

      <el-descriptions :column="3" size="small" class="descriptions">
        <el-descriptions-item label="负责人">DHdesign Team</el-descriptions-item>
        <el-descriptions-item label="联系电话">0898-12345678</el-descriptions-item>
        <el-descriptions-item label="所属地区">海口</el-descriptions-item>
        <el-descriptions-item label="环境">
          <el-tag size="small">生产</el-tag>
        </el-descriptions-item>
        <el-descriptions-item label="项目地址">
          海南省海口市美兰区数字政务中心
        </el-descriptions-item>
      </el-descriptions>

      <p class="summary">
        DHdesign 基于 Element Plus 二次封装,用于统一双端组件体验与文档交付方式。
      </p>
    </el-page-header>
  </div>
</template>

<script lang="ts" setup>
import {
  Breadcrumb,
  BreadcrumbItem,
  Button,
  Descriptions,
  DescriptionsItem,
  Notification,
  PageHeader,
  Tag,
} from '@szhn/dh-design-pc'


function onBack() {
  Notification({
    title: '返回',
    message: '已触发返回操作',
    type: 'info',
  })
}
</script>

<style scoped>
.content-row,
.extra-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--el-color-primary-light-7);
  color: var(--el-color-primary);
  font-weight: 700;
}

.title {
  font-size: 18px;
  font-weight: 600;
}

.subtitle {
  color: var(--el-text-color-regular);
}

.descriptions {
  margin-top: 16px;
}

.summary {
  margin: 16px 0 0;
  color: var(--el-text-color-regular);
  line-height: 1.8;
}
</style>

基础用法

简单场景下的标准页头。

<template>
  <el-page-header content="详情页面" @back="onBack">
    <template #extra>
      <el-button>操作</el-button>
    </template>
  </el-page-header>
</template>

<script lang="ts" setup>
import { PageHeader as ElPageHeader, Button as ElButton } from '@szhn/dh-design-pc'


function onBack() {
  window.history.back()
}
</script>

自定义图标

默认图标可能无法满足需求,可通过 icon 属性或具名插槽自定义返回图标。

<template>
  <el-page-header :icon="Edit" content="编辑资料" @back="onBack" />
</template>

<script lang="ts" setup>
import { PageHeader as ElPageHeader } from '@szhn/dh-design-pc'
import { Edit } from '@szhn/dh-design-pc/icons'


function onBack() {
  window.history.back()
}
</script>

无图标

icon 属性设置为 null 或空字符串可去掉图标。

<template>
  <el-page-header :icon="null" title="页面标题" content="无图标页头" @back="onBack" />
</template>

<script lang="ts" setup>
import { PageHeader as ElPageHeader } from '@szhn/dh-design-pc'


function onBack() {
  window.history.back()
}
</script>

面包屑导航

通过具名插槽 breadcrumb 可为页头添加面包屑导航。

<template>
  <el-page-header content="详情页" @back="onBack">
    <template #breadcrumb>
      <el-breadcrumb separator="/">
        <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
        <el-breadcrumb-item>列表</el-breadcrumb-item>
        <el-breadcrumb-item>详情</el-breadcrumb-item>
      </el-breadcrumb>
    </template>
  </el-page-header>
</template>

<script lang="ts" setup>
import { PageHeader as ElPageHeader, Breadcrumb as ElBreadcrumb, BreadcrumbItem as ElBreadcrumbItem } from '@szhn/dh-design-pc'


function onBack() {
  window.history.back()
}
</script>

额外操作区

使用 extra 插槽添加按钮、下拉等操作项。

<template>
  <el-page-header content="用户详情" @back="onBack">
    <template #extra>
      <el-button>查看</el-button>
      <el-button type="primary">编辑</el-button>
    </template>
  </el-page-header>
</template>

<script lang="ts" setup>
import { PageHeader as ElPageHeader, Button as ElButton } from '@szhn/dh-design-pc'


function onBack() {
  window.history.back()
}
</script>

主要内容

通过 default 插槽放置页面主要内容,实现更丰富的页头交互。

<template>
  <el-page-header content="项目信息" @back="onBack">
    <div class="content">
      <p>这里可以放置页面的主要内容,比如详情描述、指标块、说明文案等。</p>
      <p>DHdesign 组件库基于 Element Plus 二次封装。</p>
    </div>
  </el-page-header>
</template>

<script lang="ts" setup>
import { PageHeader as ElPageHeader } from '@szhn/dh-design-pc'


function onBack() {
  window.history.back()
}
</script>

<style scoped>
.content {
  margin-top: 12px;
  color: var(--el-text-color-regular);
  line-height: 1.8;
}
</style>

Anatomy

组件由以下几个区域组成:

vue
<template>
  <el-page-header>
    <template #breadcrumb />
    <template #icon />
    <template #title />
    <template #content />
    <template #extra />
    <template #default />
  </el-page-header>
</template>

API

PageHeader Attributes

属性名说明类型默认值
icon返回图标组件string / ComponentBack
title主标题string''
content内容string''

PageHeader Events

事件名说明参数
back点击左侧区域触发

PageHeader Slots

插槽名说明
icon图标内容
title标题内容
content内容区
extra右侧扩展操作
breadcrumb面包屑导航
default默认内容

更多内容参见 Element Plus PageHeader 文档。