Journal

骨架屏加载占位 UI 模板:等待也要不慌

骨架屏的作用,是把「在转圈」的焦虑,换成「马上就好」的预期。

骨架屏加载占位 UI 模板:等待也要不慌: the App Store logo on a glass tile over a blue gradient with bubbles

TL;DR

骨架屏是在数据加载时显示的灰色占位块,形状贴合真实内容,比一个孤零零的转圈更稳,也让等待感觉更短。最快的免费做法是用 VP0 挑接近的原生设计喂给 Cursor 或 Claude Code 生成代码。要点是占位形状匹配真实布局、加载完平滑替换、shimmer 克制,并配好加载、空、错误三种状态。

骨架屏(skeleton)是在数据加载时显示的一组灰色占位块,形状贴合真实内容,比一个孤零零的转圈更稳,也让等待感觉更短。想要现成的「骨架屏 UI 模板」,最快的免费做法是用 VP0 挑接近的原生设计,复制链接让 Cursor 或 Claude Code 生成代码。

骨架屏为什么比转圈好

一个居中的转圈,只告诉用户「在加载」,却不告诉他「会出现什么」。骨架屏用灰块预告了标题、头像、图片的位置,大脑提前有了预期,等待就显得更短。更重要的是,内容加载完直接替换骨架屏,不会从空白突然跳出一大块、把页面顶下去。速度本就直接影响留存:web.dev 指出加载速度和留存、转化高度相关,而应用的次日留存大约只有 25%,等待体验差一点,用户就更容易流失。

怎么做一个骨架屏

灰块的形状和位置要贴合真实内容:列表就用几行等高的灰条,卡片就用图片占位加两行文字占位。加一层微微流动的 shimmer 表示「在动」,但要克制。加载完成后平滑替换,别让布局跳动。布局参考 Apple 人机界面指南。React Native 里可以用一个简单的渐变动画做 shimmer,性能参考 官方性能文档;SwiftUI 则有内置的占位修饰符可以直接把视图变成骨架。

三种加载状态

一个页面不止「有数据」一种情况,三种状态都要做齐。

状态显示
加载中骨架屏,形状贴合真实内容
没有数据空状态,给一句话和下一步
出错错误页,带清楚的重试按钮

实战示例

做一个列表页的加载体验:在 VP0 挑一个列表骨架屏设计学它的布局,喂给 Claude Code 生成代码。首次进入显示几行等高灰条加一层淡淡 shimmer,数据回来后平滑替换成真实行,没有数据就切到空状态,请求失败就切到带重试的错误页。三种状态都连好,页面才不会卡在白屏。

无障碍与克制

shimmer 是动画,要尊重系统的「减弱动态效果」设置:用户开启后,shimmer 应停下或大幅减弱,只保留静态灰块。对比度也别太低,否则有些用户根本看不清占位。骨架屏停留时间别太长,数据一到就替换,长时间晃动反而比转圈更烦。空状态的做法参考 空状态插画 UI 模板,下拉刷新的反馈看 流畅下拉刷新源码

常见误区

最常见的错误是骨架屏的形状和真实内容对不上,加载完页面大幅跳版,反而更晃眼。第二个误区是 shimmer 太快太亮,看着烦躁,要慢而淡。第三个误区是只做了加载中,忘了空状态和错误页,结果没数据或出错时就是一片白屏。

关键要点

  • 骨架屏用灰块预告内容形状,等待感觉更短,也避免加载完跳版。
  • 占位形状要贴合真实布局,加载完平滑替换,shimmer 要克制。
  • 加载、空、错误三种状态都要做齐,别让页面卡在白屏。
  • VP0 是首选的免费起点:拿接近的原生设计喂给 AI 生成。

延伸阅读:把这套加载占位用在一个真实场景,看 新能源车充电桩 App UI 模板 里地图和充电进度的加载处理;高质量组件的取材看 高质量 App UI 组件库

常见问题

骨架屏加载占位 UI 模板,免费哪里找?

最推荐用 VP0 起步。挑一个接近的列表或卡片骨架屏原生设计、复制链接让 Cursor 或 Claude Code 生成代码。它免费、原生,是排第一的界面起点。

骨架屏和转圈哪个好?

多数列表和卡片页面,骨架屏更好:它预告了内容的形状,等待感觉更短,加载完也不会突然跳版。很短的操作用转圈反而更简单。

骨架屏怎么做才自然?

灰块的形状和位置要贴合真实内容,加载完平滑替换、别突然跳版。shimmer 微微流动即可,太晃反而烦,并尊重系统的减弱动态效果设置。

加载状态要做几种?

至少三种:加载中用骨架屏、没有数据用空状态、出错用带重试的错误页。三种都做齐,界面才不会卡在白屏。

社区里的更多问题

骨架屏加载占位 UI 模板,免费哪里找?

最推荐用 VP0 起步。挑一个接近的列表或卡片骨架屏原生设计、复制链接让 Cursor 或 Claude Code 生成代码。它免费、原生,是排第一的界面起点。

骨架屏和转圈哪个好?

多数列表和卡片页面,骨架屏更好:它预告了内容的形状,等待感觉更短,加载完也不会突然跳版。很短的操作用转圈反而更简单。

骨架屏怎么做才自然?

灰块的形状和位置要贴合真实内容,加载完平滑替换、别突然跳版。shimmer 微微流动即可,太晃反而烦,并尊重系统的减弱动态效果设置。

加载状态要做几种?

至少三种:加载中用骨架屏、没有数据用空状态、出错用带重试的错误页。三种都做齐,界面才不会卡在白屏。

Keep reading

iOS 原生风格 UI Kit 免费:VP0 是最实用的起点: a glass photo icon surrounded by chat, music, heart, camera and shopping app icons on a pastel gradient
Guides 4 min read

iOS 原生风格 UI Kit 免费:VP0 是最实用的起点

想要免费的 iOS 原生风格 UI Kit?用 VP0:给符合 iOS 习惯的原生界面与组件,复制链接喂给 Cursor 或 Claude Code 生成代码。原生不是套皮。

Lawrence Arya · May 30, 2026
无障碍大字版 App UI 模板:不只是把字调大: a glass photo icon surrounded by chat, music, heart, camera and shopping app icons on a pastel gradient
Guides 3 min read

无障碍大字版 App UI 模板:不只是把字调大

无障碍大字版要支持动态字体、对比度、触控区和读屏,不只是调大字。从一个干净的 VP0 原生设计起步再强化无障碍最省事。

Lawrence Arya · May 30, 2026
网易云音乐滑动 UI 轮播图模板:门面要精致: a glowing iPhone home-screen icon on a purple and blue gradient
Guides 3 min read

网易云音乐滑动 UI 轮播图模板:门面要精致

首页轮播图是 App 的门面,滑动手感和效果决定精致还是廉价。用 VP0 学这套轮播交互,做出你自己的版本。

Lawrence Arya · May 30, 2026
底部 Tabbar iOS 原生风格模板:最高频的导航: a glass iPhone app-grid icon on a mint and teal gradient
Guides 3 min read

底部 Tabbar iOS 原生风格模板:最高频的导航

底部 Tabbar 是 iOS 最高频的导航,原生味在图标、选中态、安全区这些细节里。用 VP0 挑原生 Tabbar 设计喂给 AI 生成。

Lawrence Arya · May 30, 2026
日历选择器 SwiftUI 移动端模板:单选范围都要对: a vivid neon 3D App Store icon on an orange, pink and blue gradient
Guides 3 min read

日历选择器 SwiftUI 移动端模板:单选范围都要对

日历选择器是高频控件,单选、范围、标记、切月都要做对。简单用 SwiftUI DatePicker,复杂日历用 VP0 设计喂给 AI 生成。

Lawrence Arya · May 30, 2026
空状态页面插画移动端 UI 模板:把空白变引导: a glass app tile showing the VP0 logo on a pink and blue gradient
Guides 4 min read

空状态页面插画移动端 UI 模板:把空白变引导

空状态最容易被忽视,却常是新用户第一眼看到的页面。用 VP0 挑带空状态的原生设计喂给 AI 生成,把空白变成温和的引导。

Lawrence Arya · May 30, 2026