骨架按钮(骨架屏占位加载/微光扫过特效源码)

CSSJS 许可:自研原创

骨架屏按钮组件:加载时显示微光扫过的骨架占位,数据返回后淡入真实按钮,原生 JS 模拟异步加载,减少用户等待焦虑。

效果演示(真实可交互)

骨架屏用微光扫过动画,加载完成淡入真实内容

完整代码

HTML 结构:

<div class="sk-card">
  <!-- 骨架层 -->
  <div id="sk-skeleton" class="sk-skeleton">
    <span class="sk-block sk-line"></span>
    <span class="sk-block sk-line sk-line-short"></span>
    <span class="sk-block sk-btn-ph"></span>
  </div>
  <!-- 真实内容层 -->
  <div id="sk-real" class="sk-real" hidden>
    <h4 class="sk-title">粤喵组件库</h4>
    <p class="sk-desc">骨架按钮:先占位、后填充。</p>
    <button class="sk-action">立即体验</button>
  </div>
</div>

CSS 核心代码:

/* 骨架块:微光扫过 */
.sk-block { position: relative; background: #262c3f;
  border-radius: 8px; overflow: hidden; }
.sk-block::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(100deg, transparent 30%,
    rgba(255,255,255,.08) 50%, transparent 70%);
  transform: translateX(-100%);
  animation: sk-shimmer 1.4s infinite;
}
@keyframes sk-shimmer { to { transform: translateX(100%); } }
.sk-btn-ph { height: 42px; border-radius: 10px; width: 100%; }

JS 切换逻辑:

const skeleton = document.getElementById('sk-skeleton');
const real = document.getElementById('sk-real');
trigger.addEventListener('click', () => {
  skeleton.hidden = true;   // 隐藏骨架
  real.hidden = false;      // 显示真实内容(CSS 淡入)
});

参数说明

参数取值说明
.sk-block::aftertranslateX(-100%) → 100%光带扫过路径
sk-shimmer1.4s infinite扫光速度,网络快时可调短
光带透明度rgba(255,255,255,.08)太亮抢眼、太暗无感,建议 .06~.12
sk-btn-ph42px骨架按钮占位高度,对齐真实按钮
淡入sk-fade .5s真实内容切换动画

兼容性与性能

常见问题

Q: 骨架按钮和普通 loading 有什么区别? 骨架展示的是「结构占位」——文字、按钮等形状先画出来,适合页面级加载;普通 loading 是按钮内的转圈,适合单点操作。两者常配合使用。

Q: 光带扫过的方向能改吗? 可以,改 translateX(-100%) 为 translateY(-100%) 并配合 linear-gradient(180deg, ...) 即变为垂直扫光。

Q: 如何适配暗色主题? 把骨架底色和光带颜色抽成 CSS 变量,如 --sk-bg / --sk-shine,在 @media (prefers-color-scheme: dark) 下覆盖即可。

Q: 数据加载失败时怎么处理? 保留骨架层,在骨架层内追加一条错误占位(如「加载失败,点击重试」),点击后重新请求并再次进入骨架态。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布: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(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核