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 相关文章推荐
Jquery 学习笔记(一)
Oct 13 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
Dec 18 Javascript
Fixie.js 自动填充内容的插件
Jun 28 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
Dec 31 Javascript
原生javascript实现拖动元素示例代码
Sep 01 Javascript
bootstrap实现弹窗和拖动效果
Jan 03 Javascript
node.js微信公众平台开发教程
Mar 04 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
js 作用域和变量详解
Feb 16 Javascript
深入理解Javascript中的观察者模式
Feb 20 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 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设计模式之命令模式的应用详解
2013/05/21 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Django中的文件的上传的几种方式
2018/07/23 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
python selenium 弹出框处理的实现
2019/02/26 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
python爬取天气数据的实例详解
2020/11/20 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
创新型城市实施方案
2014/03/06 职场文书
迎新晚会主持词
2014/03/24 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL