用文字记录生活,留下美好瞬间
原创

用HTML5 Canvas实现代码雨效果

共 2,289 字,需阅读 6 分钟
2018/12/18 上午
425 次阅读

HTML5 Canvas是一个强大的绘图工具,可以用来创建各种视觉效果,其中包括代码雨效果。代码雨是一种视觉效果,类似于在屏幕上下落的字符流,给人一种代码正在“雨”下的感觉。本文将介绍如何使用HTML5 Canvas实现代码雨效果。

#实现逻辑

#1. HTML结构

首先,我们需要一个<canvas>元素来绘制代码雨。在HTML中,我们创建一个<canvas>元素,并设置一个唯一的ID,以便在JavaScript中获取它。

          
  • 1
<canvas id="codeRainCanvas"></canvas>

#2. CSS样式

接下来,我们需要一些基本的CSS样式来确保<canvas>元素铺满整个窗口。

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
<style> body { margin: 0; overflow: hidden; } canvas { display: block; } </style>

#3. JavaScript逻辑

现在,让我们来实现代码雨的JavaScript逻辑。

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
<script> var canvas = document.getElementById('codeRainCanvas'); // 获取canvas元素 var ctx = canvas.getContext('2d'); // 获取2D绘图上下文 var W = window.innerWidth; // 获取窗口宽度 var H = window.innerHeight; // 获取窗口高度 canvas.width = W; // 设置canvas宽度为窗口宽度 canvas.height = H; // 设置canvas高度为窗口高度 var fontSize = 16; // 设置字符大小 var columns = Math.floor(W / fontSize); // 计算列数 var codes = []; // 定义存储代码雨列高度的数组 for (var i = 0; i < columns; i++) { codes[i] = 1; // 初始化每一列的高度为1 } // 绘制代码雨 function draw() { ctx.fillStyle = 'rgba(0, 0, 0, 0.05)'; // 设置背景色,用于制造尾迹效果 ctx.fillRect(0, 0, W, H); // 绘制填充整个canvas的矩形 ctx.fillStyle = '#0F0'; // 设置字符颜色为绿色 ctx.font = fontSize + 'px arial'; // 设置字体大小和字体 for (var i = 0; i < codes.length; i++) { var text = String.fromCharCode(Math.floor(Math.random() * 128)); // 随机生成一个字符 var x = i * fontSize; // 计算字符的横坐标 var y = codes[i] * fontSize; // 获取字符的纵坐标 ctx.fillText(text, x, y); // 绘制字符 if (y > H && Math.random() > 0.975) { codes[i] = 0; // 如果字符超出屏幕并且随机数大于0.975,则将列高度重置为0 } codes[i]++; // 增加列高度 } } // 重绘代码雨 function update() { draw(); // 绘制代码雨 requestAnimationFrame(update); // 请求浏览器重绘 } // 开始代码雨 update(); // 调用update函数,开始代码雨的动画效果 </script>

#效果展示

通过以上代码,我们实现了一个简单的代码雨效果。每一列字符以随机速度向下落,当字符超出屏幕底部时会重新回到顶部。整个过程通过不断地重绘实现动画效果。

#总结

本文介绍了如何使用HTML5 Canvas和JavaScript实现代码雨效果。通过创建一个<canvas>元素,并利用JavaScript控制字符的下落和重绘,我们可以生成一个令人惊叹的视觉效果,为网页增添一份动感与艺术。

自由转载 - 署名 - 非商业性使用
https://zhangwurui.cn/article/34
0/0条看法
访客身份
在下有一拙见,不知...
期待你的捷足先登