JavaScript+html5 canvas制作色彩斑斓的正方形效果

JavaScript+HTML5 Canvas制作色彩斑斓的正方形效果,通常可以通过以下步骤实现:

  1. 创建canvas元素,并设置画布大小。
<canvas id="myCanvas" width="500" height="500"></canvas>
  1. 获取canvas元素和绘图上下文'2d'。
const canvas = document.querySelector('#myCanvas');
const ctx = canvas.getContext('2d');
  1. 创建一个函数来绘制正方形。
function drawSquare(x, y, size, r, g, b){
  ctx.fillStyle = `rgb(${r}, ${g}, ${b})`; // 设置填充颜色
  ctx.fillRect(x, y, size, size); // 绘制矩形
}

函数参数x,y是矩形左上角的坐标,size是矩形的大小,而r、g、b指定了填充颜色。

  1. 创建一个循环来绘制一系列的正方形。
for(let i = 0; i < canvas.width; i += 20){
  for(let j = 0; j < canvas.height; j += 20){
    drawSquare(i, j, 18, Math.random() * 255, Math.random() * 255, Math.random() * 255); // 绘制大小为18的矩形
  }
}

这里for循环中的两个变量i和j表示正方形在x轴和y轴的坐标位置。每次循环会生成一个随机的填充颜色,然后用drawSquare函数绘制正方形。

  1. 最后将完整代码映射到HTML页面中。
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Colorful Squares</title>
</head>
<body>
  <h1>Colorful Squares</h1>
  <canvas id="myCanvas" width="500" height="500"></canvas>
  <script>
    const canvas = document.querySelector('#myCanvas');
    const ctx = canvas.getContext('2d');

    function drawSquare(x, y, size, r, g, b){
      ctx.fillStyle = `rgb(${r}, ${g}, ${b})`;
      ctx.fillRect(x, y, size, size);
    }

    for(let i = 0; i < canvas.width; i += 20){
      for(let j = 0; j < canvas.height; j += 20){
        drawSquare(i, j, 18, Math.random() * 255, Math.random() * 255, Math.random() * 255);
      }
    }
  </script>
</body>
</html>

这段代码会在页面上生成一个带有彩色正方形的画布。

示例一:

下面是一些自定义的参数,在这个示例中,我们能看到,绘图的每个小正方形位置不同,而且它们的大小也不一样。颜色参数也使用了不同的色调。

for(let i = 0; i < canvas.width; i += 20){
  for(let j = 0; j < canvas.height; j += 20){
    drawSquare(i + 10, j + 10, Math.random() * 10 + 8, Math.random() * 100, Math.random() * 120, Math.random() * 255);
  }
}

示例二:

在这个示例中,我们尝试使用动画效果来实现将彩色方块画布慢慢淡化的效果。我们可以通过使用clearRect函数在每一帧绘制前,把canvas画布内容清空以达到效果。

let opacityValue = 1; // 创建一个变量,用于控制canvas透明度

function draw(){
  ctx.clearRect(0, 0, canvas.width, canvas.height); // 每一帧都清空canvas内容
  for(let i = 0; i < canvas.width; i += 20){
    for(let j = 0; j < canvas.height; j += 20){
      drawSquare(i, j, 18, Math.random() * 255, Math.random() * 255, Math.random() * 255);
    }
  }

  opacityValue -= 0.005; // 逐渐减少透明度
  if(opacityValue > 0){ // 如果透明度值还未降为0
    requestAnimationFrame(draw); // 递归调用自身
    ctx.globalAlpha = opacityValue; // 设置画布透明度
  }
}

draw();

这样的效果过程中,灰色色调的小方块逐渐消失,最后画布变成了空白。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript+html5 canvas制作色彩斑斓的正方形效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • CSS导航栏及弹窗示例代码

    针对“CSS导航栏及弹窗示例代码”的完整攻略,以下是详细的讲解。 CSS导航栏的制作 HTML代码结构 首先需要创建一个HTML文档,并在其中设置导航栏需要的HTML结构。一般来说,导航栏分为三大部分:左侧LOGO/品牌名称、中间菜单导航、右侧用户信息或其他附加项。此处我采用典型的bootstrap导航栏HTML结构,示例如下: <nav class=…

    css 2023年6月9日
    00
  • VueJS如何引入css或者less文件的一些坑

    VueJS如何引入CSS或者LESS文件的一些坑 在VueJS中,引入CSS或者LESS文件是非常常见的操作。然而,在实际开发中,可能会遇到一些坑,例如样式不生效、样式冲突等问题。本攻略将详细讲解VueJS如何引入CSS或者LESS文件的一些坑,包括基本用法、注意事项和示例说明。 1. 基本用法 在VueJS中,可以使用<style>标签或者&l…

    css 2023年5月18日
    00
  • jQuery和CSS仿京东仿淘宝列表导航菜单

    下面是详细讲解“jQuery和CSS仿京东仿淘宝列表导航菜单”的完整攻略。 一、需求分析 设计导航菜单,包含点击切换功能 实现鼠标悬停展开子菜单 导航菜单需要响应式布局 二、技术选型 HTML CSS jQuery 三、技术实现 HTML结构和CSS样式编写 1.1 HTML结构编写 <nav> <ul class="navLis…

    css 2023年6月10日
    00
  • avalon js实现仿google plus图片多张拖动排序附源码下载

    下面是“avalon js实现仿google plus图片多张拖动排序附源码下载”的完整攻略: 确定需求 首先要明确需求:实现一个类似于 Google Plus 那样的多张图片拖动排序功能,需要使用 AvalonJS,对应的 HTML 还要使用 Bootstrap。 搭建 HTML 首先,需要布局页面和引入依赖。 <!DOCTYPE html> …

    css 2023年6月11日
    00
  • 浅析CSS中calc()的使用

    以下是“浅析CSS中calc()的使用”的完整攻略: CSS中calc()的使用 在 CSS 中,calc() 函数可以用于计算长度、百分比和其他数值。以下是一些常见的用法。 计算长度 calc() 函数可以用于计算长度,例如: div { width: calc(100% – 20px); } 上述代码将 div 元素的宽度设置为其父元素宽度减去 20 像…

    css 2023年5月18日
    00
  • css实现兼容火狐、IE的LI奇偶行颜色交替方法

    CSS实现兼容火狐、IE的LI奇偶行颜色交替方法 为了实现网页中列表的行颜色交替,通常需要使用CSS中的:odd和:even伪类,但是在不同的浏览器下(比如firefox和IE)这两个伪类的实现方式有所不同,因此需要针对不同的浏览器进行特别处理,以下是实现方法: 方法一:使用CSS选择器 li:nth-child(odd) { background-colo…

    css 2023年6月9日
    00
  • vue 监听是否切屏和开启小窗的实现过程

    实现Vue监听切换屏幕或开启小窗口可以使用pagehide,blur,visibilitychange和resize等事件来实现。下面将介绍如何使用这些事件监听切屏和开启小窗口。 监听页面切屏 监听页面切换屏幕可以使用pagehide和visibilitychange事件。其中,pagehide事件在页面隐藏时触发,例如用户切换到另一个标签页,或者浏览器被最…

    css 2023年6月10日
    00
  • 通过JavaScript使Div居中并随网页大小改变而改变

    要实现通过JavaScript使Div居中并随网页大小改变而改变,可以遵循以下步骤: 给该Div设置样式,使其垂直和水平居中,并将左右和上下的边距都设置为auto。例如: .div-center { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } 使用J…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部