开学特惠 会员低至4.4折 限时加赠 10000 AI积分 立即前往 arrow

骨架屏怎么设计?首屏、刷新与失败回退

文章目录
免费使用墨刀
更新时间: 2026年10月08日

骨架屏适合在首次加载时提示内容的大致结构。标题、导航和可用操作应先显示,数据区域按真实布局占位,哪个模块先返回就先展示哪个。刷新已有内容时通常保留旧数据并标明更新状态;加载失败后结束骨架屏,在出错区域给出重试入口。

下面以一个虚构采购概览为例,把待审批卡片、最近采购表格和月度趋势分开处理。可以先把分区加载顺序连成原型演示,检查同一页面从没有数据到部分完成,再到局部失败时,用户还能看什么、做什么。

骨架屏设计封面:采购概览中已加载的汇总卡、表格占位和局部重试提示
同一页的不同模块可以独立加载和重试。

先把采购概览拆成独立返回的三个区域

这个概览使用同一采购组织与日期范围,但三个区域分别请求数据。待审批卡片统计范围内全部待审批单据;表格只展示最近 3 笔采购,不是待审批总数的明细。月度趋势展示 7 月至 9 月的采购金额。三者口径在标题或说明里写清,避免用户把表格行数当成卡片数量。

区域首次加载时保留什么占位形状本例成功内容
待审批卡片标题“待审批单据”、查看入口数字位置的短矩形12 笔
最近采购标题、采购单号/供应商/金额三列列头与三行表格高度一致的文本占位PO-201、PO-202、PO-203 三行
月度采购金额标题与统计范围“7—9月”图表绘图区,不画假折线或假坐标值7 月 2.6 万元、8 月 3.1 万元、9 月 2.8 万元

本例表格数据固定为:PO-201,示例供应商甲,800.00 元;PO-202,示例供应商乙,1,200.00 元;PO-203,示例供应商丙,600.00 元。这三个金额只用于展示最近采购记录,不用于推导月度采购总额。所有公司名、编号和数据均为教学示例。

占位行数是布局选择,不是提前知道了记录总数。真实返回只有一行时,就显示那一行;返回空列表时则切换成明确的空状态。骨架块也不要写“0 笔”或“0.00 元”,因为零会被理解成真实业务数据。

Carbon 的加载模式建议将骨架用于初始加载的数据与容器类内容,并按模块逐步展示,而不是给所有元素都加占位。落到这个页面,创建采购按钮如果不依赖这些查询,应从一开始就可用;若某个操作确实依赖数据,则只说明并限制该操作。

首屏按返回顺序填充,不等待全页同时完成

本例不设“必须展示骨架屏多少毫秒”的门槛。用响应事件定义状态,比为所有网络情况指定一个动画时长更可靠。初始先显示页面标题“采购概览”、组织和日期筛选,以及三个区域的结构;随后按照下面的次序演示。

事件已经可读的区域仍在等待的区域用户看到的反馈
进入页面,三个请求已发出页面框架与固定文字卡片、表格、趋势各数据区显示对应骨架
待审批数量返回卡片显示 12 笔表格、趋势仅替换卡片占位
最近采购返回卡片和三行采购记录趋势表格可阅读,趋势继续等待
趋势请求明确失败卡片和三行采购记录无区域继续等待趋势区结束骨架,显示“月度趋势未加载,重试”

局部失败时,整个页面不应继续标成“加载中”,也不应把已经返回的卡片和表格清空。点趋势区域的重试,只重新请求趋势数据;如后端确实只能重新获取整组数据,也应在界面约定中说明,不能给读者一种“只重试一块”的假象。

采购概览的月度趋势加载中与加载失败状态,12笔待审批卡片和最近3笔采购表均保留
模块独立加载,趋势失败后可重试,已获得的摘要与明细继续显示。

骨架的宽度和高度尽量接近最终内容,尤其保留表头、卡片边界和图表区域的高度。长供应商名称出现时仍需正常换行或按既定规则截断,不能为保住占位形状而隐藏业务信息。Ant Design 的 Skeleton 组件说明可用来理解占位形态,但实际行高和布局应由自己的内容决定。

再次刷新时,保留旧内容并标出它的时间

首屏没有数据,骨架能告诉用户这里将出现什么;刷新时已经有内容,再把整页替换成灰块,会让用户暂时失去可用信息。本例在已有数据时保留原卡片、表格和折线,在各区域显示轻量的“正在更新”,完成后再替换对应区域。

例如月度趋势在 09:40 成功展示了 2.6、3.1、2.8 万元三个值,用户在 09:42 刷新。刷新失败后仍保留这组值,但标注“更新失败,显示 09:40 的数据”,旁边提供重试。时间是本例的展示时间,不代表两分钟是某种加载阈值。

这里保留旧内容有一个条件:组织、日期范围和查询口径没有变化。如果用户从 A 组织切到 B 组织,不能继续把 A 组织的金额留在 B 的标题下。可以让新查询区域进入加载态,或者明确区分上一查询结果;必须避免旧数据被当成当前筛选结果。

不同区域各自刷新时,也要避免看似属于同一时刻却口径不同。如果用户需要一份同步的总览快照,应由数据接口提供一致的快照口径,界面再显示对应时间。骨架屏和动画无法解决数据一致性问题。

在评审中检查“结束等待”是否真的完成

在墨刀里建立初始加载、卡片返回、表格返回、趋势失败、趋势重试成功五个状态,再补“已有趋势刷新失败”状态。用同一套组件布局保持位置一致,交互连线展示事件顺序;不把播放中的占位动画当成真实网络响应。

走查时重点看三个结果:请求成功后占位是否完全移除,空结果是否明确显示“暂无采购记录”,失败是否停止动画并提供可用的下一步。空列表与请求失败必须分开,不能统一写“暂无数据”。完整状态关系可参照后台加载、空白与异常状态设计。

还应把读屏和动态效果要求写进交付说明:占位块不作为真实内容反复朗读,区域的忙碌状态随请求结束而更新,错误消息能够被获知;用户减少动态效果时,应采用静态或弱化动画的占位。不要让“闪得更明显”成为等待反馈的唯一手段。需要整理更多组件的反馈方式,可继续阅读UI 与界面设计专题。

免费在线原型设计工具

内容丰富组件拖拽即用

多人在线编辑实时协作

海量模板素材快速复用

一键分享交付在线评论互动