canvas实现代码雨

canvas实现代码雨


canvas 动画 特效
let canvas = document.getElementById("canvas") as HTMLCanvasElement;
let ctx = canvas.getContext("2d") as CanvasRenderingContext2D;
canvas.height = screen.availHeight;
canvas.width = screen.availWidth;

let str: string[] = "NIKOXJYNBWDNIKOXJYNBWDNIKOXJYNBWDNIKOXJYNBWD".split("");
let arr = Array(Math.ceil(canvas.width / 10)).fill(0);

const rain = () => {
  ctx.fillStyle = "rgba(0, 0, 0, 0.05)"; //填充背景颜色
  ctx.fillRect(0, 0, canvas.width, canvas.height); //背景
  ctx.fillStyle = "#0f0"; //文字颜色
  arr.forEach((item, index) => {
    ctx.fillText(
      str[Math.floor(Math.random() * str.length)],
      index * 10,
      item + 10
    );
    arr[index] =
      item >= canvas.height || item > 10000 * Math.random() ? 0 : item + 10; //添加随机数让字符随机出现不至于那么平整
  });
};

setInterval(rain, 50);
© 2025 Niko Xie