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 :first选择器使用介绍
Aug 09 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
利用Angularjs实现幻灯片效果
Sep 07 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
Feb 06 Javascript
node使用UEditor富文本编辑器的方法实例
Jul 11 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
详解vue2.6插槽更新v-slot用法总结
Mar 09 Javascript
JavaScript 处理树数据结构的方法示例
Jun 16 Javascript
layui树形菜单动态遍历的例子
Sep 23 Javascript
小程序瀑布流组件实现翻页与图片懒加载
May 19 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获取网页内容方法总结
2008/12/04 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
在Python中使用元类的教程
2015/04/28 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
python3设计模式之简单工厂模式
2017/10/17 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
python opencv实现证件照换底功能
2019/08/19 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
python实现logistic分类算法代码
2020/02/28 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
工作汇报开头与结尾怎么写
2014/11/08 职场文书
大学生年度个人总结
2015/02/15 职场文书
童年读书笔记
2015/06/26 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书