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 相关文章推荐
json对象转字符串如何实现
Dec 02 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
Feb 02 Javascript
JQuery在页面中添加和除移DOM示例代码
Jun 24 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
Sep 24 Javascript
详解Vue.js入门环境搭建
Mar 17 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
Jul 28 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
在Vue项目中使用snapshot测试的具体使用
Apr 16 Javascript
VUE脚手架具体使用方法
May 20 Javascript
Vue之Mixins(混入)的使用方法
Sep 24 Javascript
Vue watch响应数据实现方法解析
Jul 10 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/08/08 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
简单实现php上传文件功能
2017/09/21 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
Python try except finally资源回收的实现
2021/01/25 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
Linux如何为某个操作添加别名
2015/02/05 面试题
聚会通知怎么写
2015/04/23 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
python常见的占位符总结及用法
2021/07/02 Python
一文搞懂Java中的注解和反射
2022/06/21 Java/Android