Canvas 粒子波形
用原生 Canvas 畫出可縮放的粒子與波形動畫。
這個 demo 用單一 canvas 呈現多層波形與緩慢流動的粒子。它保留在 client 端執行,讓內容頁仍能維持靜態輸出。
原始碼
const canvas = document.querySelector('[data-lab-demo="canvas-waves"]');
const ctx = canvas.getContext('2d');
let frame = 0;
function draw(width, height) {
ctx.clearRect(0, 0, width, height);
for (let layer = 0; layer < 4; layer += 1) {
ctx.beginPath();
const yBase = height * (0.28 + layer * 0.14);
for (let x = 0; x <= width; x += 8) {
const y = yBase + Math.sin(x * 0.018 + frame * 0.025 + layer * 1.7) * (16 + layer * 7);
if (x === 0) ctx.moveTo(x, y);
else ctx.lineTo(x, y);
}
ctx.stroke();
}
frame += 1;
requestAnimationFrame(() => draw(width, height));
}