使用canvas实现黑客帝国数字雨效果


Posted in HTML / CSS onJanuary 02, 2020

使用canvas实现黑客帝国数字雨

效果图:

使用canvas实现黑客帝国数字雨效果

代码:

<!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>
      body {
        margin: 0;
        padding: 0;
      }
      canvas {
        width: 100%;
        height: 100%;
      }
    </style>
  </head>
  <body>
    <canvas style="background:#111"></canvas>

    <script>
      //获取画布对象
      var can = document.querySelector("canvas");
      //获取画布的上下文
      var ctx = can.getContext("2d");
      //设置canvas的宽度和高度
      can.width = window.innerWidth;
      can.height = window.innerHeight;
      //每个文字的字体大小
      var fontSize = 16;
      //计算列
      var colunms = Math.floor(window.innerWidth / fontSize);
      //记录每列文字的y轴坐标
      var arr = [];
      //给每一个文字初始化一个起始点的位置
      for (var i = 0; i < colunms; i++) {
        arr.push(0);
      }
      //运动的文字
      var str = "you are a silly";
      //绘画的函数
      function draw() {
        //布满全屏的黑色遮罩层
        ctx.fillStyle = "rgba(0,0,0,0.05)";
        ctx.fillRect(0, 0, window.innerWidth, window.innerHeight);
        //给字体设置样式
        ctx.font = "700 " + fontSize + "px  微软雅黑";
        //给字体添加颜色
        ctx.fillStyle = "#00cc33";
        //写入画布中
        for (var i = 0; i < colunms; i++) {
          var index = Math.floor(Math.random() * str.length);
          var x = i * fontSize;
          var y = arr[i] * fontSize;
          ctx.fillText(str[index], x, y);
          //如果文字的Y轴坐标大于画布的高度,1/100*colunms概率将该文字的Y轴坐标重置为0
          if (y >= can.height && Math.random() > 0.99) {
            arr[i] = 0;
          }
    //文字Y轴坐标+1
          arr[i]++;
        }
      }
      draw();
      setInterval(draw, 30);
    </script>
  </body>
</html>

总结

以上所述是小编给大家介绍的使用canvas实现黑客帝国数字雨效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

HTML / CSS 相关文章推荐
详解CSS的border边框属性及其在CSS3中的新特性
May 10 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
Jun 23 HTML / CSS
CSS实现半透明边框与多重边框的场景分析
Nov 13 HTML / CSS
HTML5混合开发二维码扫描以及调用本地摄像头
Dec 27 HTML / CSS
HTML5实现表单自动验证功能实例代码
Jan 11 HTML / CSS
教你如何一步一步用Canvas写一个贪吃蛇
Oct 22 HTML / CSS
html5记忆翻牌游戏实现思路及代码
Jul 25 HTML / CSS
使用HTML5的File实现base64和图片的互转
Aug 01 HTML / CSS
编写html5时调试发现脚本php等网页js、css等失效
Dec 31 HTML / CSS
HTML5本地存储之Web Storage详解
Jul 04 HTML / CSS
CSS filter 有什么神奇用途
May 25 HTML / CSS
Canvas如何做个雪花屏版404的实现
Sep 25 HTML / CSS
HTML5中外部浏览器唤起微信分享
Jan 02 #HTML / CSS
Html5获取高德地图定位天气的方法
Dec 26 #HTML / CSS
鼠标滚轮事件和Mac触控板双指事件
Dec 23 #HTML / CSS
HTML5 Canvas 实现K线图的示例代码
Dec 23 #HTML / CSS
html5利用canvas实现颜色容差抠图功能
Dec 23 #HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
Dec 19 #HTML / CSS
吃透移动端 Html5 响应式布局
Dec 16 #HTML / CSS
You might like
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python中的字典操作及字典函数
2018/01/03 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
旅游管理专业大学生职业规划书
2014/02/27 职场文书
工会换届选举方案
2014/05/21 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
周一问候语大全
2015/11/10 职场文书