LoadinG

Canvas+JS代码实现跟随鼠标移动的小星星效果

本文阅读 1 分钟
首页 程序代码 正文

1、新建一个名为 canvasStar.js的文件
2、右键打开该 js 文件,把下面代码复制进去:

window.addEventListener("load", () => {
  var canvas = document.querySelector("#canvas");
  var ctx = canvas.getContext("2d");
  window.onresize = resizeCanvas;
  function resizeCanvas() {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
  }
  resizeCanvas();
  canvas.style.cssText = `
    position: fixed;
    z-index: 1000;
    pointer-events: none;
    `;
  var arr = [];
  var colours = ["#ffff00", "#66ffff", "#3399ff", "#99ff00", "#ff9900"];
  window.addEventListener("mousemove", (e) => {
    arr.push({
      x: e.clientX,
      y: e.clientY,
      r: Math.random() * 0.5 + 1.5,
      td: Math.random() * 4 - 2,
      dx: Math.random() * 2 - 1,
      dy: Math.random() * 1 + 1,
      rot: Math.random() * 90 + 90,
      color: colours[Math.floor(Math.random() * colours.length)],
    });
  });
  function star(x, y, r, l, rot) {
    ctx.beginPath();
    for (let i = 0; i < 5; i++) {
      ctx.lineTo(
        Math.cos(((18 + i * 72 - rot) * Math.PI) / 180) * r + x,
        -Math.sin(((18 + i * 72 - rot) * Math.PI) / 180) * r + y,
      );
      ctx.lineTo(
        Math.cos(((54 + i * 72 - rot) * Math.PI) / 180) * l + x,
        -Math.sin(((54 + i * 72 - rot) * Math.PI) / 180) * l + y,
      );
    }
    ctx.closePath();
  }
  function draw() {
    for (let i = 0; i < arr.length; i++) {
      let temp = arr[i];
      star(temp.x, temp.y, temp.r, temp.r * 3, temp.rot);
      ctx.fillStyle = temp.color;
      ctx.strokeStyle = temp.color;
      ctx.lineWidth = 0.1;
      ctx.lineJoin = "round";
      ctx.fill();
      ctx.stroke();
    }
  }
  function update() {
    for (let i = 0; i < arr.length; i++) {
      arr[i].x += arr[i].dx;
      arr[i].y += arr[i].dy;
      arr[i].rot += arr[i].td;
      arr[i].r -= 0.015;
      if (arr[i].r < 0) {
        arr.splice(i, 1);
      }
    }
  }
  setInterval(() => {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    draw();
    update();
  }, 20);
});

3、引入JS文件在的路径

<script src="canvasStar.js"></script>

4、在body里添该加标签

<canvas id="canvas"></canvas>

以上就完成了~

总结:
这样在你的网页就可以直接看到跟随鼠标移动的小星星效果了。

文章采用:署名-非商业性使用-相同方式知识共享 署名 4.0 协议国际版 (CC BY-NC-SA 4.0) 许可协议授权。
免责声明:本页面资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系客服并出示版权证明以便删除。
分享
给网站顶部添加灯笼效果 网站元旦新年灯笼装饰Html代码
« 上一篇 12-02
关于CDN内容分发网络加速对网站排名和收录会不会影响
下一篇 » 12-03

发表评论 Comment

您必须 后才能发表评论哦~
昵称
请输入您的昵称
邮箱
输入QQ邮箱可获取头像
网址
可通过昵称访问您网站
快捷回复: 验证码:
让大家也知道你的独特见解
已有 0 条评论

动态快讯

热门文章

QQ客服:3236485 QQ群号:530123520

在线时间:09:00-18:00

扫描二维码

联系官方客服微信号

扫描二维码

关注官方微信公众号

{"error":400,"message":"over quota"}