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 相关文章推荐
自动完成JS类(纯JS, Ajax模式)
Mar 12 Javascript
javascript fullscreen全屏实现代码
Apr 09 Javascript
用Javascript同时提交多个Web表单的方法
Dec 26 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
Javascript实现的简单右键菜单类
Sep 23 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
javascript实现页面滚屏效果
Jan 17 Javascript
Bootstrap模态框使用详解
Feb 15 Javascript
官方推荐react-navigation的具体使用详解
May 08 Javascript
JS回调函数简单易懂的入门实例分析
Sep 29 Javascript
JS+CSS实现3D切割轮播图
Mar 21 Javascript
JavaScript实现鼠标经过表格某行时此行变色
Nov 20 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
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
关于axios如何全局注册浅析
2018/01/14 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
RC4文件加密的python实现方法
2015/06/30 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
python中关于数据类型的学习笔记
2020/07/19 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
基督教婚礼主持词
2014/03/14 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
详解Golang如何优雅的终止一个服务
2022/03/21 Golang