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 相关文章推荐
dojo 之基础篇(二)之从服务器读取数据
Mar 24 Javascript
JavaScript获得选中文本内容的方法
Dec 02 Javascript
jquery实现智能感知连接外网搜索
May 21 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
Apr 05 Javascript
jQuery插件Validation快速完成表单验证的方式
Jul 28 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
Aug 05 Javascript
浅谈$_FILES数组为空的原因
Feb 16 Javascript
Three.js中网格对象MESH的属性与方法详解
Sep 27 Javascript
vue+node+webpack环境搭建教程
Nov 05 Javascript
详解javascript中的Error对象
Apr 25 Javascript
Vue 实现从文件中获取文本信息的方法详解
Oct 16 Javascript
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
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的垃圾回收机制详解
2013/10/28 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
SVG描边动画
2017/02/23 Javascript
angular动态表单制作
2018/02/23 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
微信小程序如何获取手机验证码
2018/11/04 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
外贸英语专业求职信范文
2013/12/25 职场文书
小饰品店的创业计划书范文
2013/12/28 职场文书
给民警的表扬信
2014/01/08 职场文书
关于期中考试的反思
2014/02/02 职场文书
任命书范本大全
2014/06/06 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
安全演讲稿开场白
2014/08/25 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
先进班组材料范文
2014/12/25 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书