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 页面执行时间计算代码
Mar 04 Javascript
javascript匿名函数应用示例介绍
Mar 07 Javascript
开发中可能会用到的jQuery小技巧
Mar 07 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
Jul 31 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
jQuery简单操作cookie的插件实例
Jan 13 Javascript
AngularJS基础 ng-mousemove 指令简单示例
Aug 02 Javascript
快速实现jQuery多级菜单效果
Feb 01 Javascript
jquery实现图片放大点击切换
Jun 06 jQuery
vue增加强缓存和版本号的实现方法
May 01 Javascript
微信小程序实现左侧滑动导航栏
Apr 08 Javascript
详解JS数组方法
Nov 20 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实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
PHP解决中文乱码
2017/04/28 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
求得div 下 img的src地址的js代码
2007/02/28 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
python的keyword模块用法实例分析
2015/06/30 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
Django的models模型的具体使用
2019/07/15 Python
python生成requirements.txt的两种方法
2019/09/18 Python
python 模拟登陆github的示例
2020/12/04 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
办公室主任先进事迹
2014/01/18 职场文书
新品发布会策划方案
2014/06/08 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
python实现过滤敏感词
2021/05/08 Python
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python