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 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
基于jquery &amp; json的省市区联动代码
Jun 26 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
JS实现字体选色板实例代码
Nov 20 Javascript
JavaScript中的关联数组问题
Mar 04 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
Jun 24 Javascript
JS实现的相册图片左右滚动完整实例
Nov 23 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
JavaScript ES2019中的8个新特性详解
Feb 20 Javascript
element-ui 中使用upload多文件上传只请求一次接口
Jul 19 Javascript
vue-cli随机生成port源码的方法
Sep 02 Javascript
javascript+Canvas实现画板功能
Jun 23 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 获取一个月第一天与最后一天的代码
2010/05/16 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
原生js开发的日历插件
2017/02/04 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python lambda和Python def区别分析
2014/11/30 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
Django中使用Celery的方法示例
2018/11/29 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
详解用python写一个抽奖程序
2019/05/10 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
校园主题婚礼活动策划方案
2014/09/15 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
职工年度考核评语
2014/12/31 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python