JS画布动态实现黑客帝国背景效果


Posted in Javascript onNovember 08, 2020

本文实例为大家分享了JS画布动态实现黑客帝国背景效果的具体代码,供大家参考,具体内容如下

效果图

JS画布动态实现黑客帝国背景效果

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    *{
      padding:0;
      margin:0;
    }
    body{
      overflow: hidden;
    }
  </style>
</head>
<body>
    <canvas id="mom" style="background:#111"></canvas>
  <script>
   window.onload = function(){
    //获取画布对象
    var canvas = document.getElementById("mom");
    //获取画布的上下文
    //getContext() 方法返回一个用于在画布上绘图的环境。
    var context =canvas.getContext("2d");
    //获取浏览器屏幕的宽度和高度
    var W = window.innerWidth;
    var H = window.innerHeight;
    //设置canvas的宽度和高度
    canvas.width = W;
    canvas.height = H;
    //每个文字的字体大小
    var fontSize = 16;
    //计算列
    var colunms = Math.floor(W /fontSize);
    //记录每列文字的y轴坐标
    var drops = [];
    //给每一个文字初始化一个起始点的位置
    //计算每一个文字所谓坐标 存储y轴的坐标 
    for(var i=0;i<colunms;i++){
      drops.push(0);
    }
    //运动的文字
    var str ="JavaScript function(){}";
    //4:fillText(str,x,y);原理就是去更改y的坐标位置
    //绘画的函数
    function draw(){
      context.fillStyle = "rgba(0,0,0,0.05)";
      //fillRect() 方法绘制“已填色”的矩形。默认的填充颜色是黑色。
      context.fillRect(0,0,W,H);
      //给字体设置样式
      context.font = "700 "+fontSize+"px 微软雅黑";
      //给字体添加颜色
      context.fillStyle ="#00cc33";//可以rgb,hsl, 标准色,十六进制颜色
      //写入画布中
      for(var i=0;i<colunms;i++){
        var index = Math.floor(Math.random() * str.length);//设置文字出发时间随机 Math.floor(Math.random()*str.length)让数组里面的文字索引随机出现 
        var x = i*fontSize;
        var y = drops[i] *fontSize;//也让y轴方向也向下掉一个文字的距离
        context.fillText(str[index],x,y);
        // //如果要改变时间,肯定就是改变每次他的起点
        if(y >= canvas.height && Math.random()>0.99){
          drops[i] = 0;
        }
        drops[i]++;//让数组里面的值每次加一,用于上面的y轴下掉 
      }
    };
    //随机颜色
    function randColor(){
      var r = Math.floor(Math.random() * 256);
      var g = Math.floor(Math.random() * 256);
      var b = Math.floor(Math.random() * 256);
      return "rgb("+r+","+g+","+b+")";
    }
    draw();
    setInterval(draw,20);
  };
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
Nov 28 Javascript
JS实现随机数生成算法示例代码
Aug 08 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
jQuery向webApi提交post json数据
Jan 16 Javascript
Node层模拟实现multipart表单的文件上传示例
Jan 02 Javascript
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
简述pm2常用命令集合及配置文件说明
May 30 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 Javascript
JavaScript实现前端网页版倒计时
Mar 24 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
Nov 07 #Javascript
Node.js path模块,获取文件后缀名操作
Nov 07 #Javascript
解决vue props传Array/Object类型值,子组件报错的情况
Nov 07 #Javascript
解决Vue watch里调用方法的坑
Nov 07 #Javascript
浅谈vue.watch的触发条件是什么
Nov 07 #Javascript
html+vue.js 实现漂亮分页功能可兼容IE
Nov 07 #Javascript
解决vue watch数据的方法被调用了两次的问题
Nov 07 #Javascript
You might like
php 页面执行时间计算代码
2008/12/04 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
javascript实现简易计算器
2017/02/01 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python读取mysql数据绘制条形图
2020/03/25 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
寄语是什么意思
2014/04/10 职场文书
团代会闭幕词
2015/01/28 职场文书
西游降魔篇观后感
2015/06/15 职场文书
财务管理制度范本
2015/08/04 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
java如何实现socket连接方法封装
2021/09/25 Java/Android
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers