前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >❤️创意网页:创意动态画布~缤纷移动涂鸦~图片彩色打码

❤️创意网页:创意动态画布~缤纷移动涂鸦~图片彩色打码

作者头像
命运之光
发布2024-03-20 12:41:24
690
发布2024-03-20 12:41:24
举报

介绍

在本篇技术博客中,我们将介绍一个有趣的创意动态画布,它会在页面上绘制出缤纷的移动涂鸦。我们使用 HTML5 的 Canvas 元素和 JavaScript 来实现这个动态效果。每次页面加载时,涂鸦的起点位置和颜色都将随机生成,让每次绘制都成为一个独特的艺术创作。

动态图展示

静态图展示

图片1
图片2

实现思路

  1. 首先,我们需要一个用于绘制动画的 Canvas 元素。我们将设置 CSS 样式,使 Canvas 铺满整个页面,并添加背景图片作为画布的底色。
  2. 接下来,在 JavaScript 中,我们获取 Canvas 元素和 2D 上下文,以便后续绘制。
  3. 我们定义一个方框的大小,并根据页面的宽高计算出在 x 和 y 轴上的方框数量。
  4. 为了绘制移动涂鸦,我们使用一个包含颜色信息的对象,以记录每个位置的颜色。
  5. 实现一个函数来随机生成颜色,我们将使用这个颜色来绘制方框。
  6. 编写绘制方框的函数,该函数接受位置和颜色作为参数,用于在 Canvas 上绘制方框。
  7. 创建一个更新画布的函数。在该函数中,我们首先绘制之前记录的位置的颜色信息,然后随机生成一个颜色并绘制当前位置的方框,并将位置和颜色信息记录到颜色对象中。接下来,我们随机生成方框的速度并移动方框。最后,我们进行边界检测,以确保方框不会超出 Canvas 的范围。然后使用 requestAnimationFrame() 函数来循环调用更新函数,实现动画效果。
  8. 最后,在页面加载时启动动画,并随机设置方框的初始位置。

完整代码

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
  <title>Colorful Moving Doodle</title>
  <style>
    /* 设置整个页面铺满屏幕 */
    html, body {
      margin: 0;
      padding: 0;
      width: 100%;
      height: 100%;
      overflow: hidden;
    }
    /* 将 Canvas 铺满整个页面 */
     #canvas {
      display: block;
      width: 100%;
      height: 100%;
      border: 1px solid black;
      image-rendering: pixelated; /* 确保画布保持像素大小,防止插值处理 */

      /* 添加背景图片设置 */
      background-image: url('background-image.jpg');
      background-size: cover; /* 调整背景图片大小以覆盖整个画布 */
    }
  </style>
</head>
<body>
  <canvas id="canvas"></canvas>

  <script>
    // 获取 Canvas 元素和 2D 上下文
    const canvas = document.getElementById('canvas');
    const ctx = canvas.getContext('2d');

    // 设置方框的大小和初始位置
    const boxSize = 5; // 缩小方块的大小
    const numBoxesX = Math.ceil(canvas.width / boxSize);
    const numBoxesY = Math.ceil(canvas.height / boxSize);

    // 存储每个位置的颜色信息
    const colors = {};

    // 随机生成颜色
    function getRandomColor() {
      const letters = '0123456789ABCDEF';
      let color = '#';
      for (let i = 0; i < 6; i++) {
        color += letters[Math.floor(Math.random() * 16)];
      }
      return color;
    }

    // 绘制方框的函数
    function drawBox(x, y, color) {
      ctx.fillStyle = color;
      ctx.fillRect(x * boxSize, y * boxSize, boxSize, boxSize);
    }

    // 更新方框位置和绘制涂鸦
    function update() {
      // 绘制之前记录的位置颜色信息
      for (const key in colors) {
        if (colors.hasOwnProperty(key)) {
          const [x, y] = key.split('_').map(Number);
          drawBox(x, y, colors[key]);
        }
      }

      // 随机生成一个颜色
      const color = getRandomColor();

      // 绘制方框并记录位置颜色信息
      drawBox(boxX, boxY, color);
      colors[`${boxX}_${boxY}`] = color;

      // 移动方框
      const velocityX = Math.floor(Math.random() * 3) - 1; // 随机生成速度
      const velocityY = Math.floor(Math.random() * 3) - 1;
      boxX += velocityX;
      boxY += velocityY;

      // 边界检测
      if (boxX < 0) {
        boxX = numBoxesX - 1;
      } else if (boxX >= numBoxesX) {
        boxX = 0;
      }
      if (boxY < 0) {
        boxY = numBoxesY - 1;
      } else if (boxY >= numBoxesY) {
        boxY = 0;
      }

      requestAnimationFrame(update);
    }

    // 启动动画
    let boxX = Math.floor(Math.random() * numBoxesX);
    let boxY = Math.floor(Math.random() * numBoxesY);
    update();
  </script>
</body>
</html>

代码的使用方法(超简单什么都不用下载)

🍓1.打开记事本
🍓2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可
🍓3.打开html文件(大功告成(●'◡'●))

结语

本章的内容就到这里了,觉得对你有帮助的话就支持一下博主把~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 动态图展示
  • 静态图展示
    • 图片1
      • 图片2
      • 实现思路
      • 完整代码
      • 代码的使用方法(超简单什么都不用下载)
        • 🍓1.打开记事本
          • 🍓2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可
            • 🍓3.打开html文件(大功告成(●'◡'●))
            • 结语
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档