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 相关文章推荐
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
jQuery调用ajax请求的常见方法汇总
Mar 24 Javascript
JavaScript中创建字典对象(dictionary)实例
Mar 31 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 Javascript
微信小程序开发之toast提示插件使用示例
Jun 08 Javascript
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
浅析JavaScript中的特殊数据类型
Dec 15 Javascript
AngularJS实现的锚点楼层跳转功能示例
Jan 02 Javascript
JS数组splice操作实例分析
Oct 12 Javascript
js实现橱窗展示效果
Jan 11 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
php禁用函数设置及查看方法详解
2016/07/25 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
Python开发编码规范
2006/09/08 Python
Python 返回汉字的汉语拼音
2009/02/27 Python
python中的列表推导浅析
2014/04/26 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
深入了解Django中间件及其方法
2019/07/26 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
python怎么自定义捕获错误
2020/06/29 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
KTV的创业计划书范文
2014/02/02 职场文书
档案信息化建设方案
2014/05/16 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
MySQL基础(二)
2021/04/05 MySQL
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python