Vant Empty 空状态组件实战指南:占位提示、内置图片类型与主题定制

发布时间:2026/11/12 18:13:37

Vant Empty 空状态组件实战指南:占位提示、内置图片类型与主题定制 Vant Empty 空状态组件实战指南占位提示、内置图片类型与主题定制【免费下载链接】vantA lightweight, customizable Vue UI library for mobile web apps.项目地址: https://gitcode.com/GitHub_Trending/va/vantVant 的Empty组件用于在列表为空、数据加载失败、搜索无结果等场景下展示占位提示帮助用户理解当前页面状态。本文以 Empty 官方文档 为主体结合组件源码、样式变量与测试用例系统讲解其安装注册、内置图片类型、尺寸控制、插槽扩展以及基于 CSS 变量的主题定制让你在移动端业务中快速落地优雅的空状态 UI。组件介绍Empty空状态是 Vant 内置的轻量占位组件核心能力包括内置default默认、error通用错误、network网络错误、search搜索提示四类预设占位图均由组件内部以 SVG 内联渲染无需额外请求图片资源支持传入任意图片 URL或通过插槽完全自定义图片与描述区域提供默认插槽可在空状态下方追加操作按钮如重新加载去逛逛全部样式通过 CSS 变量开放可与 ConfigProvider 组件 配合实现全局主题定制。安装与引入通过以下方式来全局注册组件更多注册方式请参考组件注册import { createApp } from vue; import { Empty } from vant; const app createApp(); app.use(Empty);注册后即可在模板中使用van-empty标签。从源码结构看index.ts 通过withInstall将组件包装为可app.use()安装的插件形式并额外导出了emptyProps、EmptyProps、EmptyThemeVars类型便于按需引用。同时 index.ts 声明了GlobalComponents中的VanEmpty类型因此在 Vue 3 TypeScript 项目中无需额外类型声明即可获得完整的模板类型提示。代码演示基础用法最简单的用法是只传入description描述文字van-empty description描述文字 /此时组件会渲染内置的默认占位图灰白配色的 SVG 插画并在图片下方展示描述文字。图片类型Empty组件内置了多种占位图片类型可以在不同业务场景下使用!-- 通用错误 -- van-empty imageerror description描述文字 / !-- 网络错误 -- van-empty imagenetwork description描述文字 / !-- 搜索提示 -- van-empty imagesearch description描述文字 /从 Empty.tsx 的渲染逻辑可以印证组件内部维护了一张预设图片映射表const PRESET_IMAGES: Recordstring, () JSX.Element { error: renderError, search: renderSearch, network: renderNetwork, default: renderMaterial, }; return PRESET_IMAGES[props.image]?.() || img src{props.image} /;也就是说image属性先与内置类型匹配匹配成功则渲染对应的 SVG 图形renderError、renderSearch、renderNetwork、renderMaterial四个渲染函数否则将image值当作普通图片 URL渲染为img标签。因此image属性既支持枚举值也支持任意图片地址。这些 SVG 并非静态资源而是由 TSX 内联生成——例如renderNetwork用svg viewBox0 0 160 160绘制信号塔与波纹renderError绘制带叉号的占位图形renderSearch绘制放大镜renderMaterial绘制手机卡片插画。同时通过useId生成唯一渐变 ID并使用data-allow-mismatch标记避免 SSR 场景下的 hydration 不匹配问题对应测试文件 demo-ssr.spec.ts 覆盖了该场景。自定义大小通过image-size属性自定义图片的大小!-- 不指定单位默认为 px -- van-empty image-size100 description描述文字 / !-- 指定单位支持 rem, vh, vw -- van-empty image-size10rem description描述文字 /将image-size设置为数组格式可以分别设置宽高。数组第一项对应宽度数组第二项对应高度van-empty :image-size[60, 40] description描述文字 /其底层实现位于 format.ts 的getSizeStyle纯数字值会通过addUnit自动拼接px单位见 format.tsisNumeric判断为数字时返回${value}px否则保留原字符串因此rem、vw、vh等合法 CSS 单位可直接透传数组形式则分别映射为width与height。该尺寸样式最终应用到.van-empty__image容器上见 Empty.tsx。对应测试 index.spec.ts 验证了image-size50时容器宽高均为50px切换为1vw后宽高均变为1vw数组[20, 10]则分别得到20px宽与10px高。自定义图片需要自定义图片时可以在image属性中传入任意图片 URLvan-empty imagehttps://fastly.jsdelivr.net/npm/vant/assets/custom-empty-image.png image-size80 description描述文字 /传入 URL 后组件渲染img标签并默认铺满.van-empty__image容器样式见 index.lessimg宽高均为100%。在实际业务中更推荐使用相对路径或 CDN 地址图片尺寸建议按设计稿配合image-size一并控制。底部内容通过默认插槽可以在Empty组件的下方插入内容常用于放置引导性操作按钮van-empty description描述文字 van-button round typeprimary classbottom-button按钮/van-button /van-empty style .bottom-button { width: 160px; height: 40px; } /style底部内容容器.van-empty__bottom通过margin-top: var(--van-empty-bottom-margin-top)默认24px与描述文字区隔。在 demo/index.vue 中可以看到该用法的完整演示按钮宽度可通过 CSS 自由控制。APIProps参数说明类型默认值image图片类型可选值为errornetworksearch支持传入图片 URLstringdefaultimage-size图片大小默认单位为px支持rem/vh/vw等 CSS 单位传数组时第一项为宽、第二项为高number | string | Array-description图片下方的描述文字string-对应源码中的 props 声明见 Empty.tsximage使用makeStringProp(default)声明默认值default对应内置默认插画imageSize的类型为Numeric | [Numeric, Numeric]。Slots名称说明default自定义底部内容image自定义图片description自定义描述文字插槽优先级从 Empty.tsx 可以看出描述区域优先渲染description插槽未提供插槽时才使用descriptionprop图片区域优先渲染image插槽见 Empty.tsx未提供时再走内置预设或 URL 逻辑default插槽渲染在.van-empty__bottom容器内。对应测试 index.spec.ts 分别验证了三个插槽的渲染行为。类型定义组件导出以下类型定义便于在 TSX 或脚本中强类型引用import type { EmptyProps } from vant;此外还导出了EmptyThemeVars见 types.ts可用于主题变量的类型约束。主题定制样式变量组件提供了下列 CSS 变量可用于自定义样式使用方法请参考 ConfigProvider 组件。名称默认值描述--van-empty-paddingvar(--van-padding-xl) 0组件内边距--van-empty-image-size160px图片容器尺寸--van-empty-description-margin-topvar(--van-padding-md)描述文字上边距--van-empty-description-padding0 60px描述文字内边距--van-empty-description-colorvar(--van-text-color-2)描述文字颜色--van-empty-description-font-sizevar(--van-font-size-md)描述文字字号--van-empty-description-line-heightvar(--van-line-height-md)描述文字行高--van-empty-bottom-margin-top24px底部内容上边距这些变量的默认值定义在 index.less 的:root/:host中并由.van-empty、__image、__description、__bottom等 BEM 类逐一消费。由于整个空状态区域使用flex-direction: columnalign-items: center布局见 index.less调整描述文字宽度时只需覆盖--van-empty-description-padding即可。说明CSS 变量名与EmptyThemeVars中emptyDescriptionLineHeight等小驼峰键一一对应参考 types.ts。另外在深色模式下组件会自动应用.van-theme-dark .van-empty { opacity: 0.5; }见 index.less降低整块插画的视觉亮度以适配暗色背景。通过 ConfigProvider 全局配置结合 Vant 的 ConfigProvider 组件可以按主题统一覆盖空状态样式例如van-config-provider :theme-vars{ emptyDescriptionColor: #969799, emptyImageSize: 140px, } van-empty description暂无数据 / /van-config-provider这样无需逐个页面改动即可在全局或局部作用域内统一空状态的图片尺寸与描述颜色与组件文档中使用 CSS 变量定制样式的思路完全一致。使用场景小结结合本文内容Empty组件在实战中的典型组合如下列表无数据van-empty description暂无数据 /接口报错imageerror 底部插槽放置重新加载按钮搜索无结果imagesearch 引导用户更换关键词的文案断网提示imagenetwork并可配合image-size控制插画在页面中的视觉占比品牌定制通过image传入品牌插画 URL或使用image插槽完全替换内置 SVG。组件全部样式与结构均围绕图片 → 描述 → 底部操作三段式布局组织见 index.less内置插画零网络开销配合本文的 Props、Slots 与 CSS 变量说明即可快速构建与业务视觉一致的移动端空状态方案。【免费下载链接】vantA lightweight, customizable Vue UI library for mobile web apps.项目地址: https://gitcode.com/GitHub_Trending/va/vant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/8 22:22:57

基于CASADI的自动驾驶路径规划与动态避障实现

1. 项目概述在自动驾驶和智能车辆控制领域,车道跟踪与动态避障是两项核心功能,直接关系到行车安全性和乘坐舒适性。这个项目采用CASADI优化框架,结合Matlab实现了一套集成化的路径规划与控制系统,能够同时处理车道保持和突发障碍物…

2026/11/9 1:08:06

AI时代GEO优化:企业流量获取新策略

1. AI搜索时代的企业流量争夺战当ChatGPT每天处理2亿次搜索请求,Google全面整合AI概览功能时,传统SEO规则正在被改写。最近帮一家跨境电商客户做诊断时发现,他们精心优化的关键词页面在AI搜索中的曝光量骤降40%,而竞品采用GEO策略…

2026/11/12 18:12:37

电压电工证考试费用培训机构怎么选

工地太忙根本没时间复习考试?郑州报考避坑指南全在这了 工地太忙根本没时间复习考试,你是不是也经常因为赶工期、盯现场、盯安全,连手机都顾不上看,更别提抽时间复习电压电工证考试内容了?别急,这篇【郑州报考避坑指南】就是专门为你写的,从考试费用、…

2026/11/12 18:12:37

30天考下嘉兴哪里可考水电工证,真实经历告诉你怎么搞定

30天考下嘉兴哪里可考水电工证,真实经历告诉你怎么搞定 工地太忙根本没时间复习考试,我就是个例子。去年刚毕业,跟几个同学一起进了工地,每天忙得连吃饭都得抢时间,更别说抽空学习电工证。直到有一天,工头说咱们这些没证的得赶紧去考,否则就调去干杂…

2026/11/12 18:12:37

赣县报考电工证的地方怎么考 内部消息告诉你真相

赣县报考电工证的地方怎么考 内部消息告诉你真相 你缺的是特种作业证,不是机会。现在找个电工相关的工作, 赣县报考电工证的地方 必须走通,否则连面试资格都没有。这个证在手,才能拿到入场券。很多人问,电工证到底怎么考?现在我告诉你 内部消息…

2026/11/12 18:12:37

考电工证还需要社保?官方报名入口怎么选

考电工证还需要社保?官方报名入口怎么选 证书过期了不知道怎么复审延期?最近很多电工朋友都在问,考电工证还需要社保?这背后到底有什么变化?如果你正在为电工证复审发愁,或者准备报名考试,这篇文章绝对能帮你理清思路。…

2026/11/12 18:07:37

考电工证600题怎么网上查询复审延期流程

考电工证600题怎么网上查询复审延期流程 证书过期了不知道怎么复审延期,很多电工师傅在遇到这个问题时一脸懵。尤其像商丘这样的地方,工地上的电工证如果过期了,就可能被暂停作业,甚至影响工资发放。那问题来了, 考电工证600题…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/11 20:27:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/12 9:51:42

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

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

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

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