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代码混淆综合解决方案-Javascript在线混淆器
Dec 18 Javascript
JS定义回车事件(实现代码)
Jul 08 Javascript
javascript:void(0)使用探讨
Aug 27 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
JS修改iframe页面背景颜色的方法
Apr 01 Javascript
JS实现的自定义右键菜单实例二则
Sep 01 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
Jun 12 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
早该知道的7个JavaScript技巧
Jun 21 Javascript
Ajax跨域实现代码(后台jsp)
Jan 21 Javascript
JS实现页面内跳转的简单代码
Sep 03 Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 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 error_log 函数的使用
2009/04/13 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
解决python对齐错误的方法
2020/07/16 Python
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
应届实习生的自我评价范文
2014/01/05 职场文书
校园公益广告语
2014/03/13 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
2014年转正工作总结
2014/11/08 职场文书
2014司机年终工作总结
2014/12/05 职场文书
redis protocol通信协议及使用详解
2022/07/15 Redis