当前位置:   article > 正文

三分钟教你实现“代码雨”_代码雨怎么编写

代码雨怎么编写

本篇文章介绍一下如何实现“代码雨”。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

先看看效果

1、绿色:

2、彩色:

3、背景色:

4、绿色逐渐变浅:

 源代码:

  1. <!DOCTYPE html>
  2. <html>
  3.    
  4. <head>   
  5.     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  6.     <title>Code -by ZhenYu.Sha</title>
  7.     <style type="text/css">
  8.         htmlbody {
  9.             width100%;
  10.             height100%;
  11.         }
  12.         body {
  13.             background#000;
  14.             overflow: hidden;
  15.             margin0;
  16.             padding0;
  17.         }
  18.     </style>
  19. </head>
  20.    
  21. <body>  
  22. <canvas id="cvs"></canvas>
  23. <script type="text/javascript">
  24.     var cvs = document.getElementById("cvs");
  25.     var ctx = cvs.getContext("2d");
  26.     var cw = cvs.width = document.body.clientWidth;
  27.     var ch = cvs.height = document.body.clientHeight;
  28.     //动画绘制对象
  29.     var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
  30.     var codeRainArr = []; //代码雨数组
  31.     var cols = parseInt(cw / 14); //代码雨列数
  32.     var step = 16;    //步长,每一列内部数字之间的上下间隔
  33.     ctx.font = "bold 26px microsoft yahei"//声明字体,个人喜欢微软雅黑
  34.     function createColorCv() {
  35.         //画布基本颜色
  36.         ctx.fillStyle = "#242424";
  37.         ctx.fillRect(00, cw, ch);
  38.     }
  39.     //创建代码雨
  40.     function createCodeRain() {
  41.         for (var n = 0; n < cols; n++) {
  42.             var col = [];
  43.             //基础位置,为了列与列之间产生错位
  44.             var basePos = parseInt(Math.random() * 300);
  45.             //随机速度 3~13之间
  46.             var speed = parseInt(Math.random() * 10) + 3;
  47.             //每组的x轴位置随机产生
  48.             var colx = parseInt(Math.random() * cw)
  49.             //绿色随机
  50.             var rgbr = 0;
  51.             var rgbg = parseInt(Math.random() * 255);
  52.             var rgbb = 0;
  53.             //ctx.fillStyle = "rgb("+r+','+g+','+b+")"
  54.             for (var i = 0; i < parseInt(ch / step) / 2; i++) {
  55.                 var code = {
  56.                     x: colx,
  57.                     y: -(step * i) - basePos,
  58.                     speed: speed,
  59.                     //  text : parseInt(Math.random()*10)%2 == 0 ? 0 : 1  //随机生成0或者1
  60.                     text: ["a""b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""s""t""u""v""w""x""y""z"][parseInt(Math.random() * 11)], //随机生成字母数组中的一个
  61.                     color"rgb(" + rgbr + ',' + rgbg + ',' + rgbb + ")"
  62.                 }
  63.                 col.push(code);
  64.             }
  65.             codeRainArr.push(col);
  66.         }
  67.     }
  68.     //代码雨下起来
  69.     function codeRaining() {
  70.         //把画布擦干净
  71.         ctx.clearRect(00, cw, ch);
  72.         //创建有颜色的画布
  73.         //createColorCv();
  74.         for (var n = 0; n < codeRainArr.length; n++) {
  75.             //取出列
  76.             col = codeRainArr[n];
  77.             //遍历列,画出该列的代码
  78.             for (var i = 0; i < col.length; i++) {
  79.                 var code = col[i];
  80.                 if (code.y > ch) {
  81.                     //如果超出下边界则重置到顶部
  82.                     code.y = 0;
  83.                 } else {
  84.                     //匀速降落
  85.                     code.y += code.speed;
  86.                 }
  87.                 
  88.                 //1 颜色也随机变化
  89.                 //ctx.fillStyle = "hsl("+(parseInt(Math.random()*359)+1)+",30%,"+(50-i*2)+"%)"; 
  90.                 //2 绿色逐渐变浅
  91.                 // ctx.fillStyle = "hsl(123,80%,"+(30-i*2)+"%)"; 
  92.                 //3 绿色随机
  93.                 // var r= 0;
  94.                 // var g= parseInt(Math.random()*255) + 3;
  95.                 // var b= 0;
  96.                 // ctx.fillStyle = "rgb("+r+','+g+','+b+")";
  97.                 //4 一致绿
  98.                 ctx.fillStyle = code.color;
  99.                 //把代码画出来
  100.                 ctx.fillText(code.text, code.x, code.y);
  101.             }
  102.         }
  103.         requestAnimationFrame(codeRaining);
  104.     }
  105.     //创建代码雨
  106.     createCodeRain();
  107.     //开始下雨吧 GO>>
  108.     requestAnimationFrame(codeRaining);
  109. </script>
  110.    
  111. </body>
  112. </html>

【推荐学习:html视频教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/85113
推荐阅读
相关标签