骨架屏
Skeleton
UI 组件也叫:骨架图、占位加载、Skeleton Screen、内容占位符
一句话:数据加载完成前,先用灰色块画出页面内容的大致轮廓,加载完再替换成真实内容。
详细解释
骨架屏按真实内容的形状画灰色占位:头像位置画一个灰圆,标题位置画一根粗灰条,正文位置画几根长短不一的细灰条,通常带一道从左往右扫过的微光动画。数据回来后,灰块原地替换成真实内容,布局不会跳动,用户也能提前知道页面长什么样。
它适合页面、列表、卡片的 首次加载。和 加载中 的区别:转圈只说「在等」,骨架屏还提前给出结构;局部刷新、按钮提交这种小等待,用转圈更合适。和 进度条 的区别:进度条表示一件任务完成了多少,骨架屏不表达进度。骨架的形状要和真实内容一致,否则替换时照样会跳。
示例
灰度线框示意,只表达结构,不代表具体视觉风格。
怎么跟 AI 说
可以直接贴给 Cursor、Claude Code 等工具,把里面的业务内容换成你自己的。
文章列表首次加载时显示骨架屏:每条左侧是 48px 灰色圆形头像占位,右侧一根宽 40% 的标题灰条和两根长短不一的正文灰条,共显示 5 条,带从左到右的浅色微光动画;数据返回后原位替换,尺寸与真实内容一致。
结构与适用场景
结构描述
由若干与真实内容同尺寸的浅灰色块组成,如圆形头像块、标题条、段落条和图片块,常带微光扫过的动画。
适用场景
- 页面、列表或卡片首次加载,且内容结构事先已知
- 加载时间在一到几秒,希望减少页面跳动和空白感
- 信息流、商品列表这类由重复卡片组成的内容区
不适用场景
- 点击按钮后的短暂提交等待,用按钮内的加载中更合适
- 内容结构不固定,画不出和真实内容一致的轮廓
- 耗时长且能拿到进度的任务,比如上传大文件
常见坏用法
- 骨架形状和真实内容完全不同,数据回来后页面照样大幅跳动
- 数据已经加载完了,还故意多显示一会儿骨架屏
- 接口报错后骨架屏一直闪,没有切换到错误状态
识别特征
- 一组浅灰色的圆形和长短不一的圆角横条
- 没有任何文字,只有内容的轮廓
- 灰块上可能有一道微光从左往右扫过
DOM 线索
插件本地识别时匹配的 CSS 选择器(标签、ARIA role、常见组件库 class)。
.ant-skeleton.el-skeleton[class*="MuiSkeleton-root"].arco-skeleton.t-skeleton.n-skeleton[data-slot="skeleton"].placeholder-glow.placeholder-wave.animate-pulse