Breadcrumb 面包屑
显示当前页面在系统层级结构中的位置,并能向上返回。
基础用法
vue
<my-breadcrumb :items="[
{ label: '首页', to: '/' },
{ label: '产品中心', to: '/products' },
{ label: '产品详情' },
]" />导航层级
深层级导航路径,展示完整的页面层级关系。
vue
<my-breadcrumb :items="[
{ label: '首页', to: '/', icon: '...' },
{ label: '管理后台', to: '/admin' },
{ label: '系统设置', to: '/admin/settings' },
{ label: '角色管理', to: '/admin/settings/roles' },
{ label: '编辑角色' },
]" />自定义分隔符
通过 separator 属性或 #separator 插槽自定义分隔符。
vue
<!-- 字符串分隔符 -->
<my-breadcrumb :items="items" separator="/" />
<my-breadcrumb :items="items" separator=">" />
<!-- 插槽自定义 -->
<my-breadcrumb :items="items">
<template #separator><span>·</span></template>
</my-breadcrumb>带图标
每级导航可携带图标,便于视觉识别。
vue
<my-breadcrumb :items="[
{ label: '首页', to: '/', icon: '...' },
{ label: '用户列表', to: '/users', icon: '...' },
{ label: '编辑用户' },
]" />自定义插槽
通过 #item 插槽完全自定义每一项的渲染。
vue
<my-breadcrumb :items="items">
<template #item="{ item, isLast }">
<span :class="{ 'font-bold': isLast }">{{ item.label }}</span>
</template>
</my-breadcrumb>组件结构
<nav> 根元素遍历 items 数组,依次渲染面包屑项(链接 <a> 或文本 <span>)和分隔符。最后一项不带链接,标记为 is-active。
CSS 类名
| 类名 | 说明 |
|---|---|
.my-breadcrumb | 根元素 |
.my-breadcrumb__item | 面包屑项 |
.is-active | 当前项(最后一项) |
.my-breadcrumb__link | 可点击链接 |
.my-breadcrumb__text | 纯文本(当前项) |
.my-breadcrumb__icon | 图标 |
.my-breadcrumb__separator | 分隔符 |
API
Breadcrumb Props
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| items | 面包屑列表 | BreadcrumbItem[] | [] |
| separator | 分隔符文字 | string | — |
Breadcrumb Events
| 事件 | 说明 | 回调 |
|---|---|---|
| item-click | 点击导航项 | (item: BreadcrumbItem, index: number) |
Breadcrumb Slots
| 名称 | 说明 | 作用域 |
|---|---|---|
| separator | 自定义分隔符 | — |
| item | 自定义每一项 | { item, index, isLast } |
BreadcrumbItem
ts
interface BreadcrumbItem {
label: string
to?: string
icon?: string // SVG string
}