小程序中简单 Loading 效果关键帧动画

在小程序开发中,Loading 动画是提升用户体验的重要细节。它不仅能缓解用户等待时的焦虑感,还能让界面显得更加生动、专业。而实现这些动效,并不需要复杂的第三方库------仅用 CSS 的 @keyframes 关键帧动画,就能轻松完成。

本文将通过两个经典示例,带你掌握小程序中实现简单 Loading 动效的核心思路:

  1. 旋转式 Loading 动画(如加载图标旋转)
  2. 呼吸灯式 Loading 动画(如星星闪烁缩放)

一、前端做动效的简单思路

在开始写代码前,先明确几个通用原则:

  • 优先使用 transformopacity:这两个属性不会触发页面重排(reflow),性能高,动画更流畅。
  • @keyframes 定义动画过程:描述"从什么状态 → 到什么状态"。
  • animation 属性控制播放方式:包括时长、循环次数、缓动函数、延迟等。
  • 小程序支持标准 CSS3 动画.wxss 文件中可直接使用 @keyframestransformanimation 等。

接下来,我们通过两个典型 Loading 动效来实践这些思路。


二、1. 旋转式 Loading 动画(图标持续旋转)

这是最常见的 Loading 效果,比如一个圆形箭头或齿轮图标不断旋转。

🎯 动画目标

<image> 元素匀速、无限地旋转一圈(360°)。

🔧 实现代码

css 复制代码
/* 定义旋转动画 */
@keyframes rotateAnimation {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* 应用到图片 */
.loading-rotate {
  width: 40rpx;
  height: 40rpx;
  animation: rotateAnimation 1s infinite linear;
}
html 复制代码
<!-- WXML -->
<image class="loading-rotate" src="/images/spinner.png" />

📌 关键点解析

  • rotate(0deg) → rotate(360deg):形成完整一圈旋转;
  • animation: ... 1s infinite linear
    • 1s:每秒转一圈;
    • infinite:无限循环;
    • linear:匀速旋转(无加速/减速),视觉更稳定;
  • 360° 与 0° 视觉一致,因此循环无缝。

💡 适用于:数据加载、提交中、网络请求等待等场景。


三、2. 呼吸灯式 Loading 动画(星星缩放+透明度变化)

这种效果更柔和、有"生命力",常用于引导页、星空背景或轻量级提示。

🎯 动画目标

让星星图标周期性地"变大变亮 → 变小变暗",模拟呼吸节奏。

🔧 实现代码

css 复制代码
/* 定义呼吸动画 */
@keyframes starBreath {
  0%,
  100% {
    opacity: 0.35;
    transform: scale(0.92);
  }
  50% {
    opacity: 1;
    transform: scale(1);
  }
}

/* 第一颗星星 */
.loading_star_1 {
  position: absolute;
  left: 134rpx;
  top: 18rpx;
  width: 42rpx;
  height: 42rpx;
  animation: starBreath 1.6s ease-in-out infinite;
}

/* 第二颗星星(错峰启动) */
.loading_star_2 {
  position: absolute;
  left: 180rpx;
  top: 2rpx;
  width: 32rpx;
  height: 32rpx;
  animation: starBreath 1.6s ease-in-out infinite;
  animation-delay: 0.4s; /* 延迟启动 */
}
html 复制代码
<!-- WXML -->
<view class="loading-container">
  <image class="loading_star_1" src="/images/star.png" />
  <image class="loading_star_2" src="/images/star.png" />
</view>

📌 关键点解析

  • 双状态设计:0%/100%(小而暗) ↔ 50%(大而亮);
  • ease-in-out 缓动:让缩放和透明度变化更自然,符合"呼吸"节奏;
  • animation-delay 错峰:多元素之间不同步,避免呆板,增强动感;
  • 使用 rpx 单位:完美适配小程序屏幕。

💡 适用于:启动页装饰、轻提示、情感化设计等场景。


四、总结

动效类型 核心属性 特点 适用场景
旋转 Loading transform: rotate() 简洁、高效、通用 数据加载、提交中
呼吸灯 Loading transform: scale() + opacity 柔和、灵动、有节奏感 引导页、装饰动画

通过这两个例子可以看出:小程序中的动效并不复杂 。只要掌握 @keyframes + animation 的组合,再配合高性能的 CSS 属性,就能用极简代码实现优雅的 Loading 效果。

相关推荐
文慧的科技江湖12 小时前
OCPP 1.6 与 2.0.1 核心消息差异对照表 - 慧知开源充电桩平台
小程序·开源·ocpp协议·慧知开源充电桩平台
LXXgalaxy13 小时前
微信小程序“记住密码”功能的实现与落地 vue3+ts的细致解析
微信小程序·小程序·notepad++
克里斯蒂亚诺更新13 小时前
微信小程序 腾讯地图 点聚合 简单示例
微信小程序·小程序·notepad++
CRMEB系统商城15 小时前
国内开源电商系统的格局与演变——一个务实的技术视角
java·大数据·开发语言·小程序·开源·php
2501_9160074715 小时前
iOS逆向工程:详细解析ptrace反调试机制的破解方法与实战步骤
android·macos·ios·小程序·uni-app·cocoa·iphone
00后程序员张16 小时前
前端可视化大屏制作全指南:需求分析、技术选型与性能优化
前端·ios·性能优化·小程序·uni-app·iphone·需求分析
January120719 小时前
Taro3 + Vue3 小程序文件上传组件,支持 PDF/PPTX 跨端使用
小程序
OctShop大型商城源码19 小时前
商城小程序开源源码_大型免费开源小程序商城_OctShop
小程序·开源·商城小程序开源源码·免费开源小程序商城
吹个口哨写代码19 小时前
h5/小程序直接读本地/在线的json文件数据
前端·小程序·json
2501_915921432 天前
苹果iOS应用开发上架与推广完整教程
android·ios·小程序·https·uni-app·iphone·webview