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下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
通过JS来判断页面控件是否获取焦点
Jan 03 Javascript
js仿百度贴吧验证码特效实例代码
Jan 16 Javascript
当jQuery1.7遇上focus方法的问题
Jan 26 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
Nov 24 Javascript
基于JQuery实现图片轮播效果(焦点图)
Feb 02 Javascript
浅谈javascript中的call、apply、bind
Mar 06 Javascript
JavaScript条件判断_动力节点Java学院整理
Jun 26 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
JS中offset和匀速动画详解
Feb 06 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 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实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
Python下线程之间的共享和释放示例
2015/05/04 Python
Python入门学习之字符串与比较运算符
2015/10/12 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
你应该知道的30个css选择器
2014/03/19 HTML / CSS
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
编辑求职信样本
2013/12/16 职场文书
导游个人求职信
2014/04/25 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
工程售后服务承诺书
2014/05/21 职场文书
计算机毕业生求职信
2014/06/10 职场文书
公证委托书格式
2014/09/13 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
Python关于OS文件目录处理的实例分享
2021/05/23 Python
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技