Vue3面包屑(Breadcrumb)

发布时间:2026/10/19 9:21:59

Vue3面包屑(Breadcrumb) Vue2面包屑Breadcrumb可自定义设置以下属性router 的路由数组routes类型Array{name: string, path?: string, query?: { [propName: string]: any } }默认 []设置面包屑类名breadcrumbClass类型string默认 undefined设置面包屑样式breadcrumbStyle类型CSSProperties默认 {}设置文本最大显示宽度超出后显示省略号maxWidth类型string | number单位 px默认 100%自定义分隔符separator类型string | slot默认 undefined默认使用 分隔设置分隔符样式separatorStyle类型CSSProperties默认 {}如何打开目标URL当前窗口或新窗口target类型_self | _blank默认 _self效果如下图在线预览①创建面包屑组件Breadcrumb.vuescript setup langts import { computed } from vue import type { CSSProperties } from vue export interface Query { [propName: string]: any // 添加一个字符串索引签名用于包含带有任意数量的其他属性 } export interface Route { name: string // 路由名称 path?: string // 路由地址 query?: Query // 路由查询参数 } export interface Props { routes?: Route[] // router 路由数组 breadcrumbClass?: string // 设置面包屑类名 breadcrumbStyle?: CSSProperties // 设置面包屑样式 maxWidth?: string | number // 设置文本最大显示宽度超出后显示省略号单位 px separator?: string // 自定义分隔符默认为 string | slot separatorStyle?: CSSProperties // 设置分隔符样式 target?: _self | _blank // 如何打开目标 URL当前窗口或新窗口 } const props withDefaults(definePropsProps(), { routes: () [], breadcrumbClass: undefined, breadcrumbStyle: () ({}), maxWidth: 100%, separator: undefined, separatorStyle: () ({}), target: _self }) const breadcrumbAmount computed(() { return props.routes.length }) function getTargetUrl(route: Route): string { let targetUrl: string if (route.path) { targetUrl route.path } if (route.query JSON.stringify(route.query) ! {}) { const query route.query Object.keys(query).forEach((param, index) { if (index 0) { targetUrl targetUrl ? param query[param] } else { targetUrl targetUrl param query[param] } }) } return targetUrl } /script template div classbreadcrumb-wrap :classbreadcrumbClass :style[ --breadcrumb-color: rgba(0, 0, 0, 0.45); --breadcrumb-bg-color-hover: rgba(0, 0, 0, 0.06); --breadcrumb-color-hover: rgba(0, 0, 0, 0.88); --breadcrumb-color-active: rgba(0, 0, 0, 0.88); --breadcrumb-padding: 0 4px; --breadcrumb-border-radius: 4px; --breadcrumb-separator-color: rgba(0, 0, 0, 0.45); , breadcrumbStyle ] div classbreadcrumb-item v-for(route, index) in routes :keyindex component :isroute.path ? a : span classbreadcrumb-link :class{ link-hover: route.path, link-active: index breadcrumbAmount - 1 } :stylemax-width: ${maxWidth}px; :hrefgetTargetUrl(route) :targettarget :titleroute.name {{ route.name }} /component span v-ifindex breadcrumbAmount - 1 classbreadcrumb-separator :styleseparatorStyle slot nameseparator :routeroute :indexindex span v-ifseparator{{ separator }}/span svg v-else focusablefalse >script setup langts import Breadcrumb from ./Breadcrumb.vue import { ref } from vue import { ArrowRightOutlined, DoubleRightOutlined } from ant-design/icons-vue import type { BreadcrumbRoute } from vue-amazing-ui const routes refBreadcrumbRoute[]([ { name: 一级路由, path: /first }, { name: 二级路由, path: /second, query: { id: 1, tab: 2 } }, { name: 三级路由 } ]) const longNameRoutes refBreadcrumbRoute[]([ { name: 一级路由 }, { name: 二级路由, path: /second, query: { id: 1, tab: 2 } }, { name: 我是一个名字超长的三级路由 } ]) const customStyle { --breadcrumb-color: rgba(0, 0, 0, 0.65), --breadcrumb-bg-color-hover: rgba(0, 0, 0, 0.1), --breadcrumb-color-hover: #ff6900, --breadcrumb-color-active: #ff6900, --breadcrumb-padding: 4px 8px, --breadcrumb-border-radius: 8px, --breadcrumb-separator-color: rgba(0, 0, 0, 0.65) } /script template div h1{{ $route.name }} {{ $route.meta.title }}/h1 h2 classmt30 mb10基本使用/h2 Breadcrumb :routesroutes / h2 classmt30 mb10自定义分隔符/h2 Flex vertical Breadcrumb :routesroutes separator/ / Breadcrumb :routesroutes template #separator ArrowRightOutlined / /template /Breadcrumb Breadcrumb :routesroutes template #separator DoubleRightOutlined / /template /Breadcrumb /Flex h2 classmt30 mb10自定义样式/h2 Flex vertical Breadcrumb :routeslongNameRoutes breadcrumb-classcustom-breadcrumb-class :max-width210 :stylecustomStyle / Breadcrumb :routeslongNameRoutes :max-width210 :breadcrumb-style{ fontSize: 20px } :stylecustomStyle / Breadcrumb :routeslongNameRoutes :breadcrumb-style{ fontSize: 20px, height: 40px } :separator-style{ fontSize: 18px } :max-width210 / Breadcrumb :routeslongNameRoutes :breadcrumb-style{ fontSize: 20px, height: 40px } :separator-style{ fontSize: 18px } :max-width210 template #separator ArrowRightOutlined / /template /Breadcrumb Breadcrumb :routeslongNameRoutes :breadcrumb-style{ fontSize: 20px, height: 40px } :separator-style{ fontSize: 18px } :max-width210 template #separator{ index } ArrowRightOutlined v-ifindex 0 / DoubleRightOutlined v-ifindex 1 / /template /Breadcrumb /Flex h2 classmt30 mb10新页面打开目标链接/h2 Breadcrumb :routesroutes target_blank / /div /template style langless scoped .custom-breadcrumb-class { font-size: 20px; color: #1677ff; height: 40px; :deep(.breadcrumb-item) { .breadcrumb-link { color: rgba(22, 119, 255, 0.72); padding: 0 8px; border-radius: 8px; } .link-hover { :hover { color: #fff; background: #4096ff; } } .link-active { color: #1677ff; } .breadcrumb-separator { color: rgba(22, 119, 255, 0.72); } } } /style
延伸阅读

更多相关文章

2026/10/19 9:21:00

DistMoE:私有数据不出域的MoE分布式指令微调路由方案

这次我们来看一个偏研究向但工程价值很明确的课题: DistMoE ,全称是 “Private-data Rehearsal-free Routing in Mixture-of-Experts for Distributed Instruction Tuning”。 简单说,它解决的是一个很现实的问题:当多个参与方…

2026/10/12 17:04:24

Vue3视频播放(Video)

Vue2视频播放(Video) 可自定义设置以下属性: 视频播放器宽度(width),类型:string | number,单位 px,默认 800 视频播放器高度(height)&#x…

2026/10/16 1:18:11

机器视觉1

机器视觉是什么? 机器视觉的组成可分为硬件和软件两部分。 硬件负责成像,相当于人的“眼睛”,包括光源及光源控制器、镜头和工业相机;软件负责图像处理分析,相当于人的“视觉皮层”。具体而言,典型的机器…

2026/10/19 9:21:06

用Coze搭建网站智能助手:从知识库配置到API接入实战

很多站长都遇到过这样的尴尬:网站内容明明很丰富,但访客进来后找不到想要的资料,转两圈就走了。客服不在线的时候,潜在客户的问题没人答,眼睁睁看着流量白白流失。我自己的几个站点也踩过这个坑,后来尝试在…

2026/10/19 9:21:06

Agent框架重构与RAG优化实战:从大函数到可扩展系统

1. 为什么要把 Agent 框架重构提上日程写这个系列到第五篇,前面四篇已经把 Agent 的核心链路、工具调用、提示词组织、以及最基础的 RAG 流程都跑通了。很多读者私信我,说按着文章抄作业,demo 确实能跑起来,但一往真实场景里推就卡…

2026/10/19 9:21:06

HCP-MMP1.0掩码提取:用Matlab脚本按区域名生成对齐ROI mask

简介:面向神经影像与fMRI数据分析人员的开源MATLAB实用工具,基于HCP-MMP1.0脑区图谱,可快速提取指定脑区的体积二值掩码文件。针对需要自定义ROI进行后续静息态或任务态分析的科研场景,可省略手动逐体素勾画区域的大量重复操作&am…

2026/10/19 9:21:06

YOLO26小缺陷检测升级:C3k2-EIEM融合边缘与空间特征

做工业质检目标检测的朋友,八成都被“小缺陷漏检”折磨过。这期是我在YOLO26上持续优化迭代的第33个版本,核心改动是把主干中的C3k2模块升级为“C3k2-EIEM”融合结构,在保留原有检测效率的前提下,把边缘特征和空间信息同时塞进特征…

2026/10/19 9:15:58

海康WebControl插件接入RTSP视频流的网页实时播放方案

1. 项目背景与核心问题拆解1.1 为什么需要WEB播放器方案先说结论:如果你要在网页里实时播放海康摄像头的RTSP视频流,直接用HTML5的video标签是行不通的。原因很简单,主流浏览器早就放弃了RTSP协议的原生支持,再加上H.264编码的视频…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑