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

举报
命运之光 发表于 2023/08/09 01:46:07 2023/08/09
【摘要】 创意动态画布~缤纷移动涂鸦~图片彩色打码

 博主:命运之光 

🌸专栏:Python星辰秘典

🐳专栏:web开发(简单好用又好看)

❤️专栏:Java经典程序设计

☀️博主的其他文章:点击进入博主的主页

前言:欢迎踏入我的Web项目专栏,一段神奇而令人陶醉的数字世界!

🌌在这里,我将带您穿越时空,揭开属于Web的奥秘。通过HTML、CSS和JavaScript的魔力,我创造了一系列令人惊叹的Web项目,它们仿佛是从梦境中涌现而出。

🌌在这个专栏中,您将遇到华丽的界面,如流星划过夜空般迷人;您将感受到动态的交互,如魔法般让您沉浸其中;您将探索响应式设计的玄妙,让您的屏幕变幻出不同的绚丽景象。

🌌无论您是一个探险家还是一位嗜血的代码巫师,这个专栏将成为您的魔法书。我将分享每个项目的秘密,解开编码的谜题,让您也能够拥有制作奇迹的力量。

🌌准备好了吗?拿起您的键盘,跟随我的指引,一起进入这个神秘而充满惊喜的数字王国。在这里,您将找到灵感的源泉,为自己创造出一段奇幻的Web之旅!

编辑

目录

介绍

动态图展示

静态图展示

图片1

 图片2

实现思路

完整代码

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

🍓1.打开记事本 

🍓2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可

🍓3.打开html文件(大功告成(●'◡'●))

结语


介绍

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


动态图展示


静态图展示

图片1

 图片2


实现思路

  1. 首先,我们需要一个用于绘制动画的 Canvas 元素。我们将设置 CSS 样式,使 Canvas 铺满整个页面,并添加背景图片作为画布的底色。

  2. 接下来,在 JavaScript 中,我们获取 Canvas 元素和 2D 上下文,以便后续绘制。

  3. 我们定义一个方框的大小,并根据页面的宽高计算出在 x 和 y 轴上的方框数量。

  4. 为了绘制移动涂鸦,我们使用一个包含颜色信息的对象,以记录每个位置的颜色。

  5. 实现一个函数来随机生成颜色,我们将使用这个颜色来绘制方框。

  6. 编写绘制方框的函数,该函数接受位置和颜色作为参数,用于在 Canvas 上绘制方框。

  7. 创建一个更新画布的函数。在该函数中,我们首先绘制之前记录的位置的颜色信息,然后随机生成一个颜色并绘制当前位置的方框,并将位置和颜色信息记录到颜色对象中。接下来,我们随机生成方框的速度并移动方框。最后,我们进行边界检测,以确保方框不会超出 Canvas 的范围。然后使用 requestAnimationFrame() 函数来循环调用更新函数,实现动画效果。

  8. 最后,在页面加载时启动动画,并随机设置方框的初始位置。


完整代码

<!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文件(大功告成(●'◡'●))


结语

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

🌌点击下方个人名片,交流会更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。