Canvas动态极光效果核心是粒子系统模拟带电粒子流动,关键在Simplex噪声控制位移、HSL颜色渐变、三层透明叠加(光晕/粒子/辉光)、跳帧优化与交互响应。

用 Canvas 实现动态极光效果,核心不是“画一张图”,而是用粒子系统模拟大气中带电粒子受磁场扰动的流动感——关键在噪声控制、颜色渐变、透明度叠加和帧间缓动。
用 Perlin 或 Simplex 噪声驱动粒子位移
纯随机会让极光显得杂乱无章。推荐用轻量级 Simplex 噪声(如 simplex-noise 库或手写 2D 版本),将时间 + 屏幕坐标作为输入,生成平滑连续的位移偏移量:
- 对每个粒子,计算
noise(x * 0.01, y * 0.01 + time * 0.5)得到垂直方向扰动值 - 水平方向可叠加另一组噪声(频率略高)制造撕裂感
- 把噪声值映射为 -2~+2 像素的偏移,并乘以一个随高度衰减的系数(模拟高层大气更稳定)
分层绘制:背景光晕 + 流动粒子 + 边缘辉光
真实极光有明暗层次。Canvas 中用三次绘制叠加实现:
-
底层:用
createRadialGradient绘制半透明蓝紫渐变大光斑,低透明度(globalAlpha = 0.08),缓慢上下浮动 -
中层:粒子系统(500–2000 个点),每个点用
arc()绘制小圆,颜色取自 HSL 色环(H: 240–300, S: 70–100%, L: 60–90%),透明度设为 0.3–0.7 -
顶层:对粒子层应用
shadowBlur=12+shadowColor设为亮青色,再用globalCompositeOperation = "lighter"叠加,增强辉光感
性能优化:跳帧 + 粒子复用 + 离屏缓存
每帧重绘全部粒子易卡顿。实际做法是:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
立即学习“前端免费学习笔记(深入)”;
- 粒子位置每 2–3 帧更新一次,视觉上仍流畅,CPU 占用降 40%
- 粒子对象不新建/销毁,只重置坐标和生命周期(
life = Math.random() * 100 + 50),用数组索引复用 - 背景光晕层画到离屏 canvas(
document.createElement('canvas')),主 canvas 每帧仅drawImage()一次
响应式与交互增强
让极光随用户行为微调:
- 监听
mousemove,将鼠标位置映射为噪声偏移中心,制造“被吸引”错觉 - 窗口 resize 时重新计算 canvas 尺寸,并用
ctx.scale(devicePixelRatio, devicePixelRatio)适配高清屏 - 添加简单开关按钮,切换「极光强度」(调节粒子数量与 alpha)和「流动速度」(缩放 time 变量)
不需要 WebGL,纯 Canvas + 噪声 + 分层混合就能做出电影级质感。重点不在画得多精细,而在运动节奏、色彩呼吸感和透明叠加的物理逻辑。


















