<前端 js 实现 代码雨 >

前端  js 实现 代码雨:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3   <head>
 4     <meta charset="UTF-8" />
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge" />
 7     <title>Document</title>
 8     <style>
 9       * {
10         padding: 0;
11         margin: 0;    
12       }
13 
14       body {
15         overflow: hidden;
16       }
17     </style>
18   </head>
19 
20   <body>
21     <canvas
22       id="mom"
23       style="background-image: linear-gradient(red,green,yellow)"
24     ></canvas>
25     <script>
26       //获取画布对象
27       var canvas = document.getElementById("mom");
28       //获取画布的上下文
29       //getContext() 方法返回一个用于在画布上绘图的环境。
30       var context = canvas.getContext("2d");
31       //获取浏览器屏幕的宽度和高度
32       var W = window.innerWidth;
33       var H = window.innerHeight;
34       //设置canvas的宽度和高度
35       canvas.width = W;
36       canvas.height = H;
37       //每个文字的字体大小
38       var fontSize = 16;
39       //计算列
40       var colunms = Math.floor(W / fontSize);
41       //记录每列文字的y轴坐标
42       var drops = [];
43       //给每一个文字初始化一个起始点的位置
44       //计算每一个文字所谓坐标 存储y轴的坐标
45       for (var i = 0; i < colunms; i++) {
46         drops[i] = 1;
47       }
48       //运动的文字JavaScript function(){}
49       var str = "hxx";
50       //4:fillText(str,x,y);原理就是去更改y的坐标位置
51       //绘画的函数
52       function draw() {
53         context.fillStyle = "rgba(0,0,0,0.05)";
54         //fillRect() 方法绘制“已填色”的矩形。默认的填充颜色是黑色。
55         context.fillRect(0, 0, W, H);
56         //给字体设置样式
57         context.font = "700 " + fontSize + "px  微软雅黑";
58         //给字体添加颜色
59         context.fillStyle = "#00cc33"; //可以rgb,hsl, 标准色,十六进制颜色
60         //写入画布中
61         for (var i = 0; i < colunms; i++) {
62           var index = Math.floor(Math.random() * str.length); 
//设置文字出发时间随机 Math.floor(Math.random()*str.length)让数组里面的文字索引随机出现 63 var x = i * fontSize; 64 var y = drops[i] * fontSize; //也让y轴方向也向下掉一个文字的距离 65 context.fillText(str[index], x, y); 66 // //如果要改变时间,肯定就是改变每次他的起点 67 if (y >= canvas.height && Math.random() > 0.99) { 68 drops[i] = 0; 69 } 70 drops[i]++; //让数组里面的值每次加一,用于上面的y轴下掉 71 } 72 } 73 74 function randColor() { 75 var r = Math.floor(Math.random() * 256); 76 var g = Math.floor(Math.random() * 256); 77 var b = Math.floor(Math.random() * 256); 78 return "rgb(" + r + "," + g + "," + b + ")"; 79 } 80 draw(); 81 setInterval(draw, 20); 82 </script> 83 </body> 84 </html>

 

 

 

posted @ 2020-03-05 09:32  柚子小哥哥  阅读(777)  评论(0编辑  收藏  举报