Vant Loading 加载组件完全指南:类型、尺寸、颜色与自定义图标实战

发布时间:2026/11/12 14:44:08

Vant Loading 加载组件完全指南:类型、尺寸、颜色与自定义图标实战 Vant Loading 加载组件完全指南类型、尺寸、颜色与自定义图标实战【免费下载链接】vantA lightweight, customizable Vue UI library for mobile web apps.项目地址: https://gitcode.com/GitHub_Trending/va/vant导读Loading 是 Vant 移动端组件库中用于展示加载中过渡状态的轻量级组件在数据请求、页面初始化、按钮提交等场景中广泛使用。本文基于 Vant 仓库中的 Loading 官方文档结合 Loading.tsx 源码、样式实现、测试用例 与 演示代码系统讲解组件的安装方式、全部 Props 参数、两个内置加载图标类型、文字排版与自定义图标插槽的完整用法并深入剖析 CSS 变量主题定制机制。读完本文你将能够在实际项目中熟练、规范地使用与定制 Loading 组件。组件简介Loading 组件用于在页面或局部区域加载数据时向用户提示正在加载的过渡状态。它默认渲染为一个旋转的圆环circular 类型也可切换为 12 段式菊花 spinner 风格并支持任意颜色、尺寸调整以及通过插槽完全替换加载图标。从源码结构看该组件由以下文件构成文件职责Loading.tsx组件核心实现定义 Props 与渲染逻辑index.less样式与 CSS 变量定义、旋转动画index.ts组件注册导出与 TS 类型导出types.tsLoadingThemeVars主题变量类型demo/index.vue官方演示页test/index.spec.ts单元测试安装与注册组件注册Loading 组件可以通过app.use进行全局注册import { createApp } from vue; import { Loading } from vant; const app createApp(); app.use(Loading);更多注册方式如局部注册、按需自动导入可参考 组件注册文档。从 index.ts 源码 可以看到组件通过withInstall包装后导出同时挂载了loadingProps以及LoadingType、LoadingProps、LoadingThemeVars等类型并声明了全局组件VanLoading因此注册后可直接在模板中使用van-loading。按需导入类型组件额外导出以下类型定义供 TypeScript 项目按需引入import type { LoadingType, LoadingProps } from vant;基础用法加载类型typeLoading 内置两种加载图标circular默认圆环样式与spinner菊花样式van-loading / van-loading typespinner /从 Loading.tsx 源码 可以看出两种图标的内置实现方式circular一个带van-loading__circular类名的svg圆环配合van-circular关键帧动画通过stroke-dasharray的变化呈现转圈效果spinner由 12 个i classvan-loading__line元素构成通过van-rotate动画 steps(12)的步进动画函数每一段线条依次旋转并淡出形成菊花旋转效果。对应的LoadingType联合类型定义为circular | spinner见 Loading.tsx。自定义颜色color通过color属性可同时改变图标与文字的默认颜色van-loading color#1989fa / van-loading typespinner color#1989fa /该属性在源码中会作用于 spinner 容器的内联color样式而图标线条、圆环均使用currentColor继承因此一处设置即可整体换色见 index.less 与 Loading.tsx。自定义大小size通过size属性控制图标大小支持数字自动补px或带单位的字符串van-loading size24 / van-loading typespinner size24px /源码中size与textSize均使用numericProp[Number, String]见 utils/props.ts最终由getSizeStyle统一转换为带px单位的宽高样式见 utils/format.ts。测试用例验证了size: 20时 spinner 的宽高均为20px见 test/index.spec.ts。加载文案default 插槽在标签内写入内容即可展示加载文字van-loading size24pxLoading.../van-loading垂直排列vertical默认情况下图标与文字水平排列设置vertical属性后改为垂直居中排列适合按钮下方或页面底部居中的加载场景van-loading size24px verticalLoading.../van-loading垂直模式下组件根节点使用flex-direction: column布局文字与图标间距由--van-padding-xs控制见 index.less。文字颜色text-color默认情况下color同时作用于图标与文字。若只想单独修改文字颜色可使用text-color属性!-- 图标和文字颜色都会改变 -- van-loading color#0094ff / !-- 只改变文字颜色 -- van-loading text-color#0094ff /从 Loading.tsx 源码 可以看到文字颜色的优先级逻辑text-color存在时优先使用它否则回退到color。测试用例对此有明确覆盖同时传入color与textColor时文字颜色取textColor见 test/index.spec.ts。自定义图标icon 插槽当内置的两种图标无法满足需求时可通过icon插槽完全替换加载图标例如结合 Vant 的 Icon 组件使用任意图标van-loading vertical template #icon van-icon namestar-o size30 / /template Loading... /van-loading源码中渲染图标时会优先判断是否存在icon插槽存在则渲染插槽内容否则回退到内置默认图标见 Loading.tsx。API 参考Props参数说明类型默认值color加载图标的颜色string#c9c9c9type类型可设置为spinnerstringcircularsize图标大小number | string30pxtext-size文字字号number | string14pxtext-color文字颜色string#c9c9c9vertical是否垂直排列图标与文字booleanfalse补充说明依据 loadingProps 定义size、text-size传数字时内部通过addUnit自动补充px单位见 utils/format.ts若不传color图标颜色取自 CSS 变量--van-loading-spinner-color默认var(--van-gray-5)即视觉上为浅灰色text-color的默认回退值为color两者均未设置时文字使用--van-loading-text-color。Slots名称说明default加载文案icon自定义加载图标Types组件导出LoadingType与LoadingProps两个类型定义见 index.ts其中LoadingProps由loadingProps通过ExtractPropTypes推导而来保证了运行时 Props 与类型定义的单一来源一致性。主题定制CSS 变量Loading 组件提供以下 CSS 变量用于自定义样式配合 ConfigProvider 全局配置组件 可在应用级别统一覆盖名称默认值说明--van-loading-text-colorvar(--van-text-color-2)文字颜色--van-loading-text-font-sizevar(--van-font-size-md)文字字号--van-loading-spinner-colorvar(--van-gray-5)图标颜色--van-loading-spinner-size30px图标大小--van-loading-spinner-duration0.8s旋转动画时长样式实现原理这些变量定义于 index.less并贯穿整个组件样式根节点.van-loading的颜色继承自--van-loading-spinner-color同时设置font-size: 0以消除图标与文字之间内联元素换行带来的空隙.van-loading__spinner的宽高取--van-loading-spinner-size并执行van-rotate无限旋转动画其中spinner类型使用steps(12)步进动画实现逐格跳动效果circular类型的动画时长固定为2s见 index.lesscircular圆环本身通过van-circular关键帧动画改变stroke-dasharray与stroke-dashoffset营造出圆环滚动的视觉效果见 index.less12 条 spinner 线条由 Less 递归generate-spinner(12)生成每条线旋转i * 30deg透明度按1 - (0.75 / 12) * (i - 1)递减形成渐变淡出的菊花形态见 index.less。对应的LoadingThemeVars类型定义在 types.tsTS 项目可借助该类型获得主题变量的强类型提示。使用示例van-loading size36px text-size16px color#1989fa style--van-loading-spinner-duration: 1.2s 加载中... /van-loading无障碍与可访问性组件根节点默认带有aria-livepolite与aria-busy{true}属性见 Loading.tsx可向屏幕阅读器等辅助技术声明区域正处于加载状态在移动端体验设计中是一个值得留意的细节。源码实现要点与测试验证渲染逻辑Loading.tsx 的核心渲染流程如下通过createNamespace(loading)生成 BEM 风格的类名前缀van-loading根据type选择SpinIcon12 条线或CircularIconSVG 圆环作为默认图标若提供icon插槽优先渲染插槽内容替换默认图标若提供default插槽渲染文字节点文字样式取textSize与textColor ?? color根节点根据type与vertical组合类名van-loading--spinner/circular及van-loading--vertical。测试覆盖test/index.spec.ts 中的单元测试验证了以下行为size属性正确改变 spinner 的宽高数字自动补pxtext-size属性正确改变文字字号text-color属性正确改变文字颜色color属性在未传text-color时同样作用于文字颜色color与text-color同时传入时文字颜色以text-color为准。此外demo.spec.ts 与 demo-ssr.spec.ts 分别对演示页做了常规渲染与 SSR 场景的快照测试保证组件在服务端渲染环境下同样稳定可用。常见问题1.size传数字与字符串有什么区别两者等价。数字会被自动补全为px单位如24→24px字符串需自行携带单位如1rem、24px。2. 为什么设置了color但文字颜色没变color会同时作用于图标与文字。如果文字颜色没有变化请检查是否同时设置了text-color——该属性优先级更高会覆盖color对文字的作用。3. 如何让加载图标更小或更大直接使用size属性即可同时注意样式中max-width: 100%/max-height: 100%的限制见 index.less若容器过小图标会被等比约束。4. 动画太快或太慢通过 CSS 变量--van-loading-spinner-duration调整旋转动画时长默认0.8scircular类型的动画时长固定为2s。总结Loading 组件虽然小但在 Loading.tsx 与 index.less 的实现中体现了清晰的层次type决定图标形态color/text-color控制色彩优先级size/text-size统一由addUnit规范化单位icon插槽提供完全的自定义能力CSS 变量则为主题化定制留出标准入口。在实际开发中推荐优先使用官方 Props 与 CSS 变量完成大部分定制需求仅在特殊场景下通过icon插槽替换图标这样既能保持组件行为的可预期性也能获得测试用例与类型定义的双重保障。【免费下载链接】vantA lightweight, customizable Vue UI library for mobile web apps.项目地址: https://gitcode.com/GitHub_Trending/va/vant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/12 3:04:29

Windows系统新手入门:避坑指南与实用技巧

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

2026/11/12 20:09:09

RedisTemplate读写分离配置与优化实战

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

2026/11/12 20:50:13

计算机二级公共基础知识备考攻略与核心考点解析

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

2026/11/13 2:26:52

在如何考电工证的全流程避坑指南 全国通用证书怎么考最靠谱

在如何考电工证的全流程避坑指南 全国通用证书怎么考最靠谱 你是不是正在为“在如何考电工证”发愁?不知道去哪报名、怕被中介坑?别急,这篇文章就是为你量身打造的。咱们今天从零开始,说清楚电工证怎么考、怎么避坑,尤其是针对在漯河的在职建筑工人,让…

2026/11/13 2:26:52

天津电工证在哪里办理保姆级教程:外省证怎么转?全攻略来了

天津电工证在哪里办理保姆级教程:外省证怎么转?全攻略来了 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是在天津工作的朋友,如果之前在外地考了电工证,现在想在当地使用,流程和要求你必须搞清楚。下面这篇保姆级教程,不仅…

2026/11/13 2:26:52

电工证考证软线连接千万别踩坑,洛阳水利工人必看的避坑指南

电工证考证软线连接千万别踩坑,洛阳水利工人必看的避坑指南 你是不是也遇到过这种情况:想考个电工证,结果被中介忽悠,花了钱还白忙一场?电工证考证软线连接这事儿,不是随便找个培训机构就能搞定的,尤其是在洛阳这样的水利工程大市, 千万别踩坑…

2026/11/13 2:26:52

沈阳高级电工证考试怎么报?别被中介坑了,电子证书才是关键!

沈阳高级电工证考试怎么报?别被中介坑了,电子证书才是关键! 不知道去哪报名怕被中介坑?你不是一个人,很多想要报考沈阳高级电工证的人,都因为信息不对称、渠道混乱而犹豫不决,甚至被骗钱又没拿到电子证书。今天我就以一个从业多年的“老电工”身份,带…

2026/11/13 2:21:51

特种作业证考试费用多少?实操考试心里没底怕挂科怎么办

特种作业证考试费用多少?实操考试心里没底怕挂科怎么办 你不是一个人在战斗,实操考试心里没底怕挂科,这几乎是每个准备报考特种作业证的学员心头的坎。尤其是像电工作业、焊工证、高处作业这些岗位,一旦操作失误,轻则影响考试结果,重则带来安全隐患。今…

2026/11/12 20:35:13

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

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

2026/11/13 0:01:06

办上海高压电工证良心建议:别被中介坑了,自己看这篇就够了

办上海高压电工证良心建议:别被中介坑了,自己看这篇就够了 你是不是也像我一样,第一次听说“高压电工证”这个名词,就感觉一头雾水?其实很多人都跟我一样,不知道去哪报名、怕被中介坑,结果花了冤枉钱还考不上。今天我就从一个在商丘培训过的学员角度,…

2026/11/13 0:01:06

黎里考电工证在哪里值不值得考

黎里考电工证在哪里值不值得考 之前考的证在外省能不能转过来?这是很多在外地工作、准备回老家发展的朋友最关心的问题。特别是在黎里地区,很多从事电力相关工作的朋友,都面临这样一个难题: 外省的电工证能否在本地使用?值不值得考?…

2026/11/13 0:01:06

毕节哪里考电工证 怎么报名学历不高也能上手

毕节哪里考电工证 怎么报名学历不高也能上手 你是不是也和我一样,学历不高,想着考个电工证,但又担心自己条件不够,怕报不上名?其实不然,只要符合条件,学历不高也能考电工证。今天就来聊聊【毕节哪里考电工证】这个问题,还有怎么报名,让你一步到位不…

2026/11/12 22:10:13

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

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

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
免费获取方案
☎咨询二维码 ☎ ↑