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 相关文章推荐
javascript实现的距离现在多长时间后的一个格式化的日期
Oct 29 Javascript
js隐式全局变量造成的bug示例代码
Apr 22 Javascript
jQuery针对各类元素操作基础教程
Aug 29 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
深入浅析AngularJS和DataModel
Feb 16 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
Oct 10 Javascript
bootstrap table小案例
Oct 21 Javascript
Vue.js如何实现路由懒加载浅析
Aug 14 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
javascript实现抢购倒计时程序
Aug 26 Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
php中截取字符串支持utf-8
2007/01/18 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
python中map的基本用法示例
2018/09/10 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
python面向对象 反射原理解析
2019/08/12 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Python表达式的优先级详解
2020/02/18 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
英国家用电器购物网站:Hughes
2018/02/23 全球购物
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
四种会话跟踪技术
2015/05/20 面试题
机电一体化毕业生求职信
2013/11/02 职场文书
物流专业求职计划书
2014/01/10 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python
vue3中provide && inject的使用
2021/07/01 Vue.js