骨架屏加载动画(Skeleton Screen 占位加载 4 款)

CSSJS 许可:自研原创

4 种骨架屏加载方案:文章卡片、个人主页、消息列表、图片网格,纯 CSS 扫光动画实现,附加载完成切换演示,复制即用零依赖。

效果演示(真实可交互)

点击上方「加载完成」按钮,即可体验骨架屏切换为真实内容的完整流程;再点「重新加载」恢复骨架屏状态。

点击按钮在「骨架屏」与「真实内容」间切换

完整代码

HTML(以文章卡片骨架为例):

<div class="skeleton-card">
  <div class="sk-media"></div>
  <div class="sk-line w70"></div>
  <div class="sk-line w90"></div>
  <div class="sk-line w55"></div>
</div>

CSS(扫光核心 + 占位块):

.skeleton-card { background: #fff; border-radius: 14px; padding: 16px; }

/* 占位块:灰色圆角块 */
.sk-media, .sk-line {
  position: relative; overflow: hidden;
  background: #e9edf6; border-radius: 6px;
}
.sk-media { height: 96px; margin-bottom: 12px; }
.sk-line  { height: 12px; margin: 10px 0; }
.w70 { width: 70%; } .w90 { width: 90%; } .w55 { width: 55%; }

/* 扫光动画:一道高光从左向右循环掠过 */
.sk-media::after, .sk-line::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(100deg, transparent 30%, rgba(255,255,255,.7) 50%, transparent 70%);
  transform: translateX(-100%);
  animation: sweep 1.5s ease-in-out infinite;
}
@keyframes sweep { 100% { transform: translateX(100%); } }

其余 3 种骨架(个人主页、消息列表、图片网格)的结构见演示区 .sk-* 系列,只需把占位块换成头像(圆形)、标签(小圆角块)、网格瓦片等形状即可,动画共用同一套扫光。加载完成切换逻辑见演示区脚本:用 hidden 属性在骨架容器与真实内容容器之间切换,零成本实现。

参数说明

参数位置说明
扫光速度animation: sweep 1.5s数字越大越慢,推荐 1.2s - 2s
高光强度rgba(255,255,255,.7)调透明度控制高光亮暗
占位块颜色background: #e9edf6改成比页面背景略深的颜色
占位块尺寸.sk-line 的 height/width模拟真实内容的宽高比例
切换逻辑hidden 属性 + 按钮事件数据到达后隐藏骨架、显示内容

兼容性与性能

常见问题

Q: 骨架屏能商用吗? 可以。本组件为粤喵自研,MIT 友好的免费商用,无需署名。

Q: 数据加载很快,骨架屏一闪而过怎么办? 可给骨架屏设置最小展示时长(如 300ms),或在 requestAnimationFrame 中延迟移除,避免闪烁(FOUC)。

Q: 怎么让扫光只扫一次而不是无限循环? 把 infinite 去掉,并在数据到达时移除整个骨架容器即可;也可以把 animation-iteration-count 设为 2-3 次。

Q: 图片加载时想用骨架屏占位怎么办? 给图片外层包一个 .sk-media 占位块,图片加载完成(load 事件)后给占位块加 display: none 或移除类名即可。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核