如何用CSS渐变和动画实现骨架屏加载效果

来源:网络编程作者:Robin头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何用CSS渐变和动画实现骨架屏加载效果》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用CSS渐变和动画实现骨架屏加载效果》有用,将其分享出去将是对创作者最好的鼓励。

骨架屏加载效果的核心是通过浅灰色背景块模拟页面内容轮廓,再配合动态渐变效果营造加载中的视觉感受,整个过程不需要JavaScript参与,仅用CSS就能完成实现。

如何用CSS渐变和动画实现骨架屏加载效果

核心实现原理

骨架屏的实现主要依赖两个CSS特性:一是用linear-gradient创建带高光的渐变背景,二是用@keyframes定义背景位置变化的动画,让高光在背景块上循环移动,形成加载的动态效果。

基础骨架块样式

首先需要定义骨架块的基础样式,包括背景色、圆角、占位尺寸等,模拟不同内容区域的轮廓,比如文本行、图片区域、卡片容器等。

/* 基础骨架块样式 */
.skeleton-item {
  background-color: #f0f0f0; /* 浅灰色背景 */
  border-radius: 4px; /* 轻微圆角 */
  margin-bottom: 12px; /* 块之间的间距 */
  position: relative;
  overflow: hidden; /* 隐藏超出范围的渐变高光 */
}

/* 模拟文本行的骨架块 */
.skeleton-text {
  height: 16px;
  width: 100%;
}

/* 模拟短文本行的骨架块 */
.skeleton-text-short {
  height: 16px;
  width: 60%;
}

/* 模拟图片/卡片的骨架块 */
.skeleton-img {
  height: 200px;
  width: 100%;
}

渐变与动画定义

接下来需要定义动态渐变背景和对应的动画,这里使用从左到右的渐变,其中中间段为更亮的灰色作为高光,通过动画改变背景的background-position实现高光移动的效果。

/* 定义骨架屏的渐变背景 */
.skeleton-item::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  /* 渐变背景:左侧浅灰 中间亮灰 右侧浅灰 */
  background: linear-gradient(
    90deg,
    #f0f0f0 0%,
    #e8e8e8 20%,
    #f0f0f0 40%
  );
  background-size: 200% 100%; /* 背景宽度设为2倍,方便移动 */
  animation: skeleton-loading 1.5s infinite linear; /* 绑定动画 */
}

/* 定义加载动画 */
@keyframes skeleton-loading {
  0% {
    background-position: 100% 0; /* 初始位置在右侧 */
  }
  100% {
    background-position: -100% 0; /* 结束位置在左侧 */
  }
}

完整使用示例

将基础样式和动画结合,就可以搭建出完整的骨架屏结构,以下是模拟一个列表项的完整代码:

<div class="skeleton-container">
  <!-- 模拟卡片容器 -->
  <div class="skeleton-item skeleton-img"></div>
  <!-- 模拟标题行 -->
  <div class="skeleton-item skeleton-text"></div>
  <!-- 模拟内容行 -->
  <div class="skeleton-item skeleton-text"></div>
  <!-- 模拟短内容行 -->
  <div class="skeleton-item skeleton-text-short"></div>
</div>

对应的容器样式可以补充如下,让整体布局更贴近真实内容:

.skeleton-container {
  padding: 16px;
  width: 300px;
  border: 1px solid #eee;
  border-radius: 8px;
}

效果优化建议

  • 可以根据页面实际内容调整骨架块的高度、宽度和圆角,让骨架屏更贴近真实内容轮廓
  • 动画时长建议设置在1.2s到2s之间,速度过快容易让用户产生视觉疲劳,过慢则达不到加载提示的效果
  • 如果页面有多个骨架块,可以给不同块设置微小的动画延迟,让动态效果更自然
  • 真实内容加载完成后,通过添加隐藏类或者直接移除骨架屏DOM,切换到真实内容展示即可

常见问题说明

如果渐变高光没有正常移动,首先检查background-size是否设置为了大于100%的宽度,其次确认overflow: hidden是否添加到了骨架块样式中,避免高光超出块范围显示异常。另外伪元素的content属性必须设置,否则伪元素不会生效。

CSS骨架屏渐变动画加载效果前端优化修改时间:2026-07-22 21:00:31

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。