粒子飘散效果用canvas+javascript实现,核心是可控随机初始化位置与速度、阻尼衰减运动、rgba单独设透明度、requestanimationframe驱动及半透明覆盖清屏避免闪烁。
粒子飘散效果不依赖 CSS 动画或 Flash,核心是用 canvas + JavaScript 控制每个粒子的初始位置、速度和生命周期;用原生 requestAnimationFrame 驱动更新,比 setInterval 更平滑且节能。
怎么在 canvas 上生成随机飘散的粒子
关键不是“随机”,而是“可控的随机”:每个粒子需独立拥有 x、y、vx(x 方向速度)、vy(y 方向速度)、life(剩余存活帧数)。
- 初始位置通常从某个中心点(如点击位置或元素中心)出发,用
Math.random()在小范围内偏移:x = centerX + (Math.random() - 0.5) * 40 - 初速度建议用极坐标转换:先随机角度
angle = Math.random() * Math.PI * 2,再按速率缩放:vx = Math.cos(angle) * speed,vy = Math.sin(angle) * speed - 避免所有粒子朝同一方向飞——别直接写
vx = Math.random() * 2 - 1,那样容易集中在水平/垂直方向,极坐标更自然
粒子怎么越飞越慢、越变越透明
真实感来自衰减:速度和透明度不能线性归零,否则运动僵硬。推荐每帧对 vx/vy 乘一个阻尼系数(如 0.97),同时用 life 值映射 alpha(透明度):