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

发布时间:2026/9/12 13:05:35

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/9/12 13:05:35

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

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

2026/9/12 13:05:35

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

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

2026/9/12 14:20:42

CVPR 2026微妙视觉计算:挑战、技术与工业应用全解析

1. 项目概述与核心价值最近在CVPR 2026的官网上看到了一个让我眼前一亮的Call for Papers,是第二届“Subtle Visual Computing”国际研讨会与挑战赛。作为一个在计算机视觉领域摸爬滚打了十来年的老手,我第一反应是:这个方向终于被系统地提上…

2026/9/12 14:20:42

BP神经网络实现MNIST手写数字识别:Python源码与调参实战

简介:一套完整的BP神经网络MNIST手写数字识别项目源码包,面向计算机专业期末大作业与深度学习入门实战场景,源码已跑通并获较高评分,可直接用于课程设计或答辩演示。包体共61个文件、15.3MB,以7个Python脚本&#xff0…

2026/9/12 14:20:42

PyTorch实战:MNIST手写数字识别完整项目解析

简介:基于PyTorch的MNIST手写数字图像分类实战项目,面向期末大作业、课程设计和深度学习入门人群,围绕经典MNIST数据集的图像分类任务,给出了完整的项目源码与工程化实现。代码覆盖数据读取与预处理、模型定义、训练评估等环节&am…

2026/9/12 14:20:42

OpenClaw多轮问答验证机制设计与实现

1. OpenClaw多轮问答机制的核心设计理念OpenClaw作为新一代对话系统,其多轮问答验证机制建立在三个核心原则上:上下文连贯性、意图一致性和知识可信度。这套机制不是简单的关键词匹配,而是通过深度语义理解实现的动态验证体系。在实际对话中&…

2026/9/12 14:20:42

七款AI编程助手月度账单实测:同一需求成本相差12倍

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

2026/9/12 14:15:38

Python datetime模块实战:时间处理与数据库操作

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

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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