点赞特效粒子爆炸动画用Canvas实现:在点击位置生成20~40个带速度、旋转、渐变透明的小粒子,通过requestAnimationFrame逐帧更新位置与状态,60帧内淡出消失,配合柔光、尾迹、按钮缩放等细节提升表现力。

点赞特效的粒子爆炸动画,核心是用 Canvas 或 SVG 在点击位置生成一批带物理属性(速度、旋转、渐变透明)的小圆点或自定义图形,然后逐帧更新位置和状态直至消失。不依赖重型库,纯 JS + Canvas 就能实现轻量、流畅的效果。
1. 创建画布与基础粒子结构
页面中插入一个全屏但层级高(position: fixed; pointer-events: none;)的 canvas,确保不影响其他交互。JS 中获取上下文,定义粒子类:
- 每个粒子包含:起始坐标(x, y)、随机初速度(vx, vy)、旋转角速度、初始大小、颜色、透明度及衰减速率
- 推荐用 HSL 颜色(如 hsl(200, 100%, 60%)),方便统一主色调并微调亮度/饱和度
- 粒子寿命设为 60 帧(约 1 秒),每帧透明度减少 1 / 60,大小线性缩小至 0
2. 点击触发与粒子批量生成
监听点赞按钮的 click 事件,用 getBoundingClientRect() 获取按钮在视口中的精确坐标(考虑滚动偏移):
- 以该坐标为中心,生成 20~40 个粒子(数量太少没冲击力,太多易卡顿)
- 给每个粒子分配随机方向(Math.random() * Math.PI * 2)和速度(如 2~8 px/帧)
- 添加轻微缩放+旋转动效:比如初始 scale 从 1.2 快速回弹到 1,或旋转角度随速度变化
3. 动画循环与性能优化
用 requestAnimationFrame 驱动主循环,每帧遍历活动粒子数组:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 更新位置:x += vx; y += vy;,同时叠加轻微重力(vy += 0.1)增强真实感
- 更新透明度与尺寸:alpha -= decay; size *= 0.97;
- 移除 alpha ≤ 0 的粒子,避免内存堆积
- 关键优化:canvas 使用 clearRect(0,0,w,h) 清屏,而非 clearRect 全屏;只绘制可见区域内的粒子
4. 增强表现力的小技巧
让效果更“抓眼”,不靠堆粒子数,而靠细节设计:
- 前 3~5 帧粒子放大 1.5 倍并加粗描边,模拟“爆开”瞬间
- 用 shadowBlur 给粒子加柔光(ctx.shadowBlur = 8; ctx.shadowColor = color;)
- 加入 2~3 个稍大的“主粒子”,飞行轨迹带尾迹(画多段透明度递减的线段)
- 配合 CSS:点击时按钮轻微缩放(transform: scale(0.92))+ 添加 transition,强化反馈一致性
不复杂但容易忽略:动画开始前禁用按钮点击(加 class 或 flag),防止连点触发多组粒子打架;结束后恢复。整个逻辑 150 行内可完成,兼顾效果与性能。

















