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:void(0)的真正含义实例分析
Aug 20 Javascript
JS拖动技术 关于setCapture使用
Dec 09 Javascript
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
js 一个关于图片onload加载的事
Nov 10 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
javascript每日必学之循环
Feb 19 Javascript
bootstrap table复杂操作代码
Nov 01 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
Dec 17 Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
微信小程序事件流原理解析
Nov 27 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实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
动态加载js的几种方法
2006/10/23 Javascript
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
详解Python用户登录接口的方法
2019/04/17 Python
django中瀑布流写法实例代码
2019/10/14 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
python else语句在循环中的运用详解
2020/07/06 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
node中使用shell脚本的方法步骤
2021/03/23 Javascript
女方婚礼新郎答谢词
2014/01/11 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
项目合作协议书
2014/09/23 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
今日说法观后感
2015/06/08 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
2019消防宣传标语!
2019/07/10 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript