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 相关文章推荐
JavaScript与DropDownList 区别分析
Jan 01 Javascript
jquery实现非叠加式的搜索框提示效果
Jan 07 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
Jquery中map函数的用法
Jun 03 Javascript
JS JSOP跨域请求实例详解
Jul 04 Javascript
基于jquery二维码生成插件qrcode
Jan 07 Javascript
JS高仿抛物线加入购物车特效实现代码
Feb 20 Javascript
JavaScript获取URL参数的方法之一
Mar 24 Javascript
Vue filters过滤器的使用方法
Jul 14 Javascript
vue如何搭建多页面多系统应用
Jun 17 Javascript
JS可断点续传文件上传实现代码解析
Jul 30 Javascript
jQuery实现放大镜案例
Oct 19 jQuery
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生成图片验证码的方法
2016/04/15 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
python绘制随机网络图形示例
2019/11/21 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
python中id函数运行方式
2020/07/03 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
五一服装活动方案
2014/01/11 职场文书
小学信息技术教学反思
2014/02/10 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
评职称个人总结
2015/03/05 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL
python pygame 开发五子棋双人对弈
2022/05/02 Python