Vue3空状态(Empty)

发布时间:2026/8/29 13:10:21

Vue3空状态(Empty)
可自定义设置以下属性自定义描述内容description类型string | slot | null默认 暂无数据设置描述文本的样式descriptionStyle类型CSSProperties默认 {}显示图片的链接或者 选择两种预置风格图片image类型outlined | filled | string | slot默认 filled设置图片的样式imageStyle类型CSSProperties默认 {}设置底部内容footer类型slot默认 undefined效果如下图在线预览①创建空状态组件Empty.vue其中引入使用了以下工具函数监听插槽存在 useSlotsExistscript setup langts import { computed } from vue import type { CSSProperties } from vue import { useSlotsExist } from components/utils export interface Props { description?: string // 自定义描述内容 string | slot descriptionStyle?: CSSProperties // 设置描述文本的样式 image?: filled | outlined | string // 显示图片的链接或者 选择两种预置风格图片 string | slot imageStyle?: CSSProperties // 设置图片的样式 footer?: string // 设置底部内容 string | slot } const props withDefaults(definePropsProps(), { description: 暂无数据, descriptionStyle: () ({}), image: filled, imageStyle: () ({}), footer: undefined }) const slotsExist useSlotsExist([default, description, footer]) const showDescription computed(() { return slotsExist.description || props.description }) const showFooter computed(() { return slotsExist.footer || props.footer }) /script template div classempty-wrap :class{ empty-image-outlined: image outlined } div classempty-image-wrap :styleimageStyle slot v-ifslotsExist.default/slot svg v-else-ifimage filled classempty-filled :styleimageStyle viewBox0 0 184 152 xmlnshttp://www.w3.org/2000/svg g fillnone fill-ruleevenodd g transformtranslate(24 31.67) ellipse fill-opacity.8 fill#F5F5F7 cx67.797 cy106.89 rx67.797 ry12.668/ellipse path dM122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z fill#AEB8C2 /path path dM101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z fillurl(#linearGradient-1) transformtranslate(13.56) /path path dM33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z fill#F5F5F7 /path path dM42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z fill#DCE0E6 /path /g path dM149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z fill#DCE0E6 /path g transformtranslate(149.65 15.383) fill#FFF ellipse cx20.654 cy3.167 rx2.849 ry2.815/ellipse path dM5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z/path /g /g /svg svg v-else-ifimage outlined classempty-outlined :styleimageStyle viewBox0 0 64 41 xmlnshttp://www.w3.org/2000/svg g transformtranslate(0 1) fillnone fill-ruleevenodd ellipse fill#f5f5f5 cx32 cy33 rx32 ry7/ellipse g fill-rulenonzero stroke#d9d9d9 path dM55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z /path path dM41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z fill#fafafa /path /g /g /svg img v-else-ifimage classempty-image :srcimage altempty / /div p v-ifshowDescription classempty-description :styledescriptionStyle slot namedescription{{ description }}/slot /p div v-ifshowFooter classempty-footer slot namefooter{{ footer }}/slot /div /div /template style langless scoped .empty-wrap { margin-inline: 8px; text-align: center; .empty-image-wrap { height: 100px; margin-bottom: 8px; opacity: 1; .empty-filled { display: inline-block; vertical-align: bottom; width: 184px; height: 100px; } .empty-outlined { display: inline-block; vertical-align: bottom; width: 64px; height: 40px; } .empty-image { display: inline-block; height: 100%; vertical-align: middle; } } .empty-description { font-size: 14px; color: rgba(0, 0, 0, 0.25); line-height: 1.5714285714285714; } .empty-footer { margin-top: 16px; } } .empty-image-outlined { margin-block: 32px; .empty-image-wrap { height: 40px; } } /style②在要使用的页面引入script setup langts import Empty from ./Empty.vue /script template div h1{{ $route.name }} {{ $route.meta.title }}/h1 h2 classmt30 mb10预置风格: filled/h2 Empty / h2 classmt30 mb10预置风格: outlined/h2 Empty imageoutlined / h2 classmt30 mb10无描述/h2 Empty :descriptionnull / h2 classmt30 mb10自定义风格/h2 h3 classmb10自定义图片地址、描述内容和样式/h3 Empty imagehttps://gw.alipayobjects.com/mdn/miniapp_social/afts/img/A*pevERLJC9v0AAAAAAAAAAABjAQAAAQ/original :image-style{ height: 60px } template #description span Customize a href#apiDescription/a /span /template template #footer Button typeprimaryCreate Now/Button /template /Empty h2插槽自定义/h2 Empty :image-style{ height: 48px } :description-style{ color: rgb(169, 174, 184) } svg classsvg-icon viewBox0 0 48 48 fillnone xmlnshttp://www.w3.org/2000/svg strokecurrentColor stroke-width4 stroke-linecapbutt stroke-linejoinmiter path dM24 5v6m7 1 4-4m-18 4-4-4m28.5 22H28s-1 3-4 3-4-3-4-3H6.5M40 41H8a2 2 0 0 1-2-2v-8.46a2 2 0 0 1 .272-1.007l6.15-10.54A2 2 0 0 1 14.148 18H33.85a2 2 0 0 1 1.728.992l6.149 10.541A2 2 0 0 1 42 30.541V39a2 2 0 0 1-2 2Z /path /svg /Empty /div /template style langless scoped .svg-icon { display: inline-block; vertical-align: bottom; width: 48px; height: 48px; fill: none; stroke: rgb(169, 174, 184); } /style

相关新闻

初识 Free RTOS

初识 Free RTOS

2026/8/29 13:00:18

一、FreeRTOS简介Free RTOS(Real Time Operating System,实时操作系统),顾名思义,一款免费的实时操作系统。作为一种专门设计用于处理实时任务的操作系统。与通用计算机上运行的桌面操作系统(如Windows、Li…

PaddleOCR PP-StructureV3 文档解析实战:5 分钟把复杂 PDF 变成一份 Markdown

PaddleOCR PP-StructureV3 文档解析实战:5 分钟把复杂 PDF 变成一份 Markdown

2026/8/29 13:00:18

PaddleOCR PP-StructureV3 文档解析实战:5 分钟把复杂 PDF 变成一份 Markdown 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and …

ai查重率在线检测能用于维普复检吗?降AIGC与查重报告不能互换

ai查重率在线检测能用于维普复检吗?降AIGC与查重报告不能互换

2026/8/29 13:00:18

ai查重率在线检测能用于维普复检吗?降AIGC与查重报告不能互换 在线页面显示什么能否用于维普复检正确用途通用AI率或疑似度不能直接代替维普修改前免费自查明确的维普AIGC报告需再看学校是否指定该入口验收AI率与疑似段总复制比、标红和来源属于论文查重报告验收重…

AI Coding全景指南:从工具选择到工程化落地实践

AI Coding全景指南:从工具选择到工程化落地实践

2026/8/29 14:10:23

这两年“AI Coding”几乎是从工具圈一路火到了管理层。打开技术社区,满屏都是“AI 辅助编程”“AI Agent 写代码”的话题;打开招聘 JD,不少岗位也把“熟悉 AI 编程工具”写成了加分项。但真正在一线把 AI 用到生产项目里的团队,往…

从“光”到“色”:一文拆解TFT液晶屏如何用晶体管“画”出千万色彩

从“光”到“色”:一文拆解TFT液晶屏如何用晶体管“画”出千万色彩

2026/8/29 14:10:23

1. 从白光到彩色:TFT液晶屏的成像之旅 当你盯着手机屏幕刷短视频时,是否想过这千万种色彩是如何被"画"出来的?这背后是一场光与电的精密共舞。TFT液晶屏的成像过程就像个高效协作的工厂流水线: 背光模组 是发电站&…

基于51单片机的门禁系统设计:从矩阵键盘到EEPROM存储的综合实践

基于51单片机的门禁系统设计:从矩阵键盘到EEPROM存储的综合实践

2026/8/29 14:10:23

1. 项目背景与赛题核心解读 最近在整理一些老项目的资料,翻到了当年参加蓝桥杯第三届单片机国赛的题目——“门禁系统”。这个题目可以说是一个经典的综合应用案例,它不像一些单纯考某个外设驱动的题目,而是把单片机开发中常见的几个核心模块…

Ubuntu 安装docker docker-compose

Ubuntu 安装docker docker-compose

2026/8/29 14:10:23

Docker 通过提供轻量级、可移植且高效的解决方案,简化了软件开发和部署。“docker build”命令是 Docker 镜像创建过程的核心。本文将探讨 Docker 构建命令、用法以及 Docker 构建的优化。Docker 构建有什么作用?Docker build 是一个命令行界面 CLI命令&…

自主行动AI Agent实战:从零搭建自动操作网页的智能体

自主行动AI Agent实战:从零搭建自动操作网页的智能体

2026/8/29 14:10:23

这次我们来看一个 Agent 自主行动的真实案例:为了让用户抢到热门健身课的一个名额,一个 AI Agent 自己完成了一整套网页操作,最终拿到了结果。新闻标题用了 “Rogue AI agent hacks gym” 来形容它,其实多数时候这不是在攻击系统漏…

AI 编码新范式:SHA 绑定 spec 审批,从 issue 到 reviewed PR

AI 编码新范式:SHA 绑定 spec 审批,从 issue 到 reviewed PR

2026/8/29 14:00:23

AgentMachinist 这个项目在 Show HN 上展示的核心信息很短:issue to reviewed PR。从一个 issue 出发,最后得到一个经过审查的 pull request。很多 AI 编程工具现在都能做到“从 issue 生成 PR”,但 reviewed 这个限定词,让它的思…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/29 10:22:10

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/28 7:34:42

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

四款热门降AI工具测评:研究生和本科生怎么选?

四款热门降AI工具测评:研究生和本科生怎么选?

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

论文降AI率免费攻略:自查、提示词与工具推荐

论文降AI率免费攻略:自查、提示词与工具推荐

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

2026/8/29 0:09:39

前言:预算有限的企业更关心投入能否形成可持续的品牌资产。评估北京GEO优化服务商时,不能只比较单篇内容或单月报价,还要看是否能够把问题词、官网、信源和监测串成完整链路。本期重点放在预算配置、试点范围和交付边界,帮助企业先…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…