科技感网格波动特效需用canvas生成点阵,以正弦函数驱动各点周期性偏移,结合连线、渐变描边、鼠标扰动和透明度衰减实现动态呼吸效果。

用 HTML5 Canvas 制作科技感网格波动特效,核心在于:用规则点阵构建网格骨架,再通过正弦/余弦函数驱动每个节点在 Z 轴(视觉深度)或 Y/X 方向做周期性偏移,配合连线、渐变描边、鼠标扰动和透明度衰减,就能呈现动态、呼吸感强的科技波纹效果。
一、搭建基础网格点阵
不依赖 CSS Grid 或 SVG,纯 JS 在 Canvas 上生成二维坐标点。例如创建 20×15 的点阵,行列间距统一为 40px,留出边距:
- 用双层 for 循环生成 points = [] 数组,每个元素含
{x, y, baseX, baseY, index}——baseX/baseY 记录原始位置,后续波动全基于它计算偏移 - 避免硬编码尺寸:用
window.innerWidth / devicePixelRatio动态适配高清屏,Canvas 宽高需同步设置canvas.width = width; canvas.height = height; - 点坐标建议居中排布,公式示例:
x = margin + col * spacing,y = margin + row * spacing
二、实现波动动画逻辑
波动不是整体平移,而是每个点独立按时间+空间位置生成位移量。推荐用组合正弦波增强层次感:
- 主波动:用
Math.sin(time * 0.001 + (x + y) * 0.02)—— 引入空间相位差,让波纹呈对角扩散感 - 叠加次级扰动:加一个低频慢波
+ Math.cos(time * 0.0003) * 0.3,模拟环境微震 - 位移映射到像素:将 -1~1 的 sin 值缩放为 ±12px 偏移,再应用到
y += offset(或同时作用于 x/y 实现涟漪形变) - 用
requestAnimationFrame驱动循环,每帧更新所有点的当前坐标
三、绘制带科技感的连线与视觉增强
仅画点太单薄;连线是科技感的关键载体。重点控制连接逻辑与视觉细节:
- 智能连线:遍历所有点对,只连接距离
-
动态描边:线宽设为 0.8–1.2,用
ctx.strokeStyle = `hsla(${200 + offset * 30}, 80%, 60%, ${0.4 - Math.abs(offset)*0.1})`实现蓝白冷色调+透明度随波动衰减 -
发光边缘:开启
ctx.shadowBlur = 6、ctx.shadowColor = '#0af',让连线自带辉光,强化数字感 - 可选:在波动峰值处绘制微小圆形高亮点(
ctx.beginPath(); ctx.arc(x, y, 1.5, 0, Math.PI*2); ctx.fill();)
四、加入交互响应提升沉浸感
静态波动略显呆板,鼠标靠近时局部放大/加速/变色,立刻提升科技交互体验:
- 监听
mousemove,实时计算鼠标到每个点的距离dist = Math.hypot(mx - x, my - y) - 若
dist ,则在原波动基础上<strong>叠加一个局部正弦扰动</strong>:<code>offset += Math.sin((time * 0.01) % Math.PI*2) * (1 - dist/120) * 8 - 同时将该区域连线颜色临时偏移为青色(
hsl(180, 100%, 70%)),并略微加粗线宽 - 为防性能问题,可限制每帧最多处理 150 个近点,或使用空间分区(如四叉树)优化距离判断
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











