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 相关文章推荐
5 cool javascript apps
Mar 24 Javascript
不错的JS中变量相关的细节分析
Aug 13 Javascript
拉动滚动条加载数据的jquery代码
May 03 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
Feb 04 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
Apr 22 Javascript
js检查页面上有无重复id的实现代码
Jul 17 Javascript
JavaScript中reduce()方法的使用详解
Jun 09 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
从零学习node.js之模块规范(一)
Feb 21 Javascript
js的函数的按值传递参数(实例讲解)
Nov 16 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
Nov 13 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中如何实现Hook机制
2017/11/14 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
brook javascript框架介绍
2011/10/10 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
element中的$confirm的使用
2020/04/26 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
Python的collections模块真的很好用
2021/03/01 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
征婚广告词
2014/03/17 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
行政处罚告知书
2015/07/01 职场文书
教师反邪教心得体会
2016/01/15 职场文书
2019 入党申请书范文
2019/07/10 职场文书
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python