HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)


Posted in Javascript onMarch 17, 2020

我们先看看HTML+JS实现“代码雨”的最终效果

1、绿色:

HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)

2、彩色:

HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)

3、背景色:

HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)

4、绿色逐渐变浅:

HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)

源代码:

<!DOCTYPE html>
<html>
  
<head> 
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 <title>Code -by ZhenYu.Sha</title>
 <style type="text/css">
  html, body {
   width: 100%;
   height: 100%;
  }
  body {
   background: #000;
   overflow: hidden;
   margin: 0;
   padding: 0;
  }
 </style>
</head>
  
<body> 
<canvas id="cvs"></canvas>
<script type="text/javascript">
 var cvs = document.getElementById("cvs");
 var ctx = cvs.getContext("2d");
 var cw = cvs.width = document.body.clientWidth;
 var ch = cvs.height = document.body.clientHeight;
 //动画绘制对象
 var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
 var codeRainArr = []; //代码雨数组
 var cols = parseInt(cw / 14); //代码雨列数
 var step = 16;  //步长,每一列内部数字之间的上下间隔
 ctx.font = "bold 26px microsoft yahei"; //声明字体,个人喜欢微软雅黑
 
 function createColorCv() {
  //画布基本颜色
  ctx.fillStyle = "#242424";
  ctx.fillRect(0, 0, cw, ch);
 }
 
 //创建代码雨
 function createCodeRain() {
  for (var n = 0; n < cols; n++) {
   var col = [];
   //基础位置,为了列与列之间产生错位
   var basePos = parseInt(Math.random() * 300);
   //随机速度 3~13之间
   var speed = parseInt(Math.random() * 10) + 3;
   //每组的x轴位置随机产生
   var colx = parseInt(Math.random() * cw)
 
   //绿色随机
   var rgbr = 0;
   var rgbg = parseInt(Math.random() * 255);
   var rgbb = 0;
   //ctx.fillStyle = "rgb("+r+','+g+','+b+")"
 
   for (var i = 0; i < parseInt(ch / step) / 2; i++) {
    var code = {
     x: colx,
     y: -(step * i) - basePos,
     speed: speed,
     // text : parseInt(Math.random()*10)%2 == 0 ? 0 : 1 //随机生成0或者1
     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)], //随机生成字母数组中的一个
     color: "rgb(" + rgbr + ',' + rgbg + ',' + rgbb + ")"
    }
    col.push(code);
   }
   codeRainArr.push(col);
  }
 }
 
 //代码雨下起来
 function codeRaining() {
  //把画布擦干净
  ctx.clearRect(0, 0, cw, ch);
  //创建有颜色的画布
  //createColorCv();
  for (var n = 0; n < codeRainArr.length; n++) {
   //取出列
   col = codeRainArr[n];
   //遍历列,画出该列的代码
   for (var i = 0; i < col.length; i++) {
    var code = col[i];
    if (code.y > ch) {
     //如果超出下边界则重置到顶部
     code.y = 0;
    } else {
     //匀速降落
     code.y += code.speed;
    }
    
    //1 颜色也随机变化
    //ctx.fillStyle = "hsl("+(parseInt(Math.random()*359)+1)+",30%,"+(50-i*2)+"%)"; 
 
    //2 绿色逐渐变浅
    // ctx.fillStyle = "hsl(123,80%,"+(30-i*2)+"%)"; 
 
    //3 绿色随机
    // var r= 0;
    // var g= parseInt(Math.random()*255) + 3;
    // var b= 0;
    // ctx.fillStyle = "rgb("+r+','+g+','+b+")";
 
    //4 一致绿
    ctx.fillStyle = code.color;
 
 
    //把代码画出来
    ctx.fillText(code.text, code.x, code.y);
   }
  }
  requestAnimationFrame(codeRaining);
 }
 
 //创建代码雨
 createCodeRain();
 //开始下雨吧 GO>>
 requestAnimationFrame(codeRaining);
</script>
  
</body>
</html>

本文主要介绍了HTML+JS实现“代码雨”效果源码,更多关于JS特效请查看下面的相关链接

Javascript 相关文章推荐
Mootools 1.2教程 同时进行多个形变动画
Sep 15 Javascript
一个js拖拽的效果类和dom-drag.js浅析
Jul 17 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
Jun 12 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
JavaScript操作HTML DOM节点的基础教程
Mar 11 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
深入理解node.js之path模块
May 03 Javascript
Angular整合zTree的示例代码
Jan 24 Javascript
微信小程序实现手指触摸画板
Jul 09 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
Sep 20 Javascript
微信小程序拍照和摄像功能实现方法示例
Feb 01 Javascript
微信小程序网络请求实现过程解析
Nov 06 Javascript
JavaScript实现横版菜单栏
Mar 17 #Javascript
JavaScript实现留言板案例
Mar 17 #Javascript
es6函数之严格模式用法实例分析
Mar 17 #Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 #Javascript
JS对象属性的检测与获取操作实例分析
Mar 17 #Javascript
JS前端模块化原理与实现方法详解
Mar 17 #Javascript
javascript中innerHTML 获取或替换html内容的实现代码
Mar 17 #Javascript
You might like
php根据年月获取季度的方法
2014/03/31 PHP
php 购物车完整实现代码
2014/06/05 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python pytest进阶之fixture详解
2019/06/27 Python
parser.add_argument中的action使用
2020/04/20 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
Python如何定义接口和抽象类
2020/07/28 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
校庆筹备方案
2014/03/30 职场文书
《假如》教学反思
2014/04/17 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书