A–G 代码样片
B 粒子
呼吸的圆
一团粒子跟着呼吸胀大、缩小。
- 适合:
- 安抚、慢下来、冥想
- 系列:
- A–G 代码样片
- 更新:
- 2026-10-29
呼吸胀缩慢
风格提示词
用代码(Canvas 2D)画一段"呼吸的圆"的动画:一团粒子跟着呼吸胀大、缩小。
适合讲:安抚、慢下来、冥想
关键词:呼吸、胀缩、慢
下面是我们自己写的参考实现:一个绘制函数 S.B5(c, w, h, t, s),c 是 canvas 的 2D context,w/h 是宽高,t 是秒,s 是给这个函数存状态用的空对象。公共的小工具函数在同一文件夹的 _公共函数.js 里。
S.B5 = (c, w, h, t, s) => {
if (!s.init) { s.init = 1; const r = rng(17); s.p = Array.from({ length: 750 }, () => [r() * TAU, Math.sqrt(r()), r()]); }
const b = .5 - .5 * Math.cos(TAU * t / 8), R = Math.min(w, h) * .33 * (.55 + .45 * b);
c.fillStyle = '#061213'; c.fillRect(0, 0, w, h);
glowDot(c, w / 2, h / 2, R * 1.3, '#4fb7a8', .12 + .1 * b);
c.fillStyle = mixHex('#5fbfb0', '#dff3ec', b);
for (const p of s.p) { const a = p[0] + t * .05 * (p[2] - .5), rr = p[1] * R + Math.sin(t * 1.3 + p[2] * 50) * 2; c.fillRect(w / 2 + Math.cos(a) * rr, h / 2 + Math.sin(a) * rr, 1.4, 1.4); }
const rising = Math.sin(TAU * t / 8) > 0; c.font = `500 ${Math.min(w, h) / 20}px ${SERIF}`; c.textAlign = 'center'; c.textBaseline = 'middle'; c.fillStyle = 'rgba(220,240,235,.55)'; c.fillText(rising ? '吸气' : '呼气', w / 2, h / 2 + Math.min(w, h) * .42);
};
分享来源:B 站视频(341 种代码动画风格)