使用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 相关文章推荐
css3气泡 css3关键帧动画创建的动态通知气泡
Feb 26 HTML / CSS
纯CSS3实现移动端展开和收起效果的示例代码
Apr 26 HTML / CSS
html5应用缓存_动力节点Java学院整理
Jul 13 HTML / CSS
详解移动端HTML5音频与视频问题及解决方案
Aug 22 HTML / CSS
HTML页面中添加Canvas标签示例
Jan 01 HTML / CSS
有关HTML5页面在iPhoneX适配问题
Nov 13 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
Oct 22 HTML / CSS
详解window.open被浏览器拦截的解决方案
Jul 18 HTML / CSS
html2canvas截图空白问题的解决
Mar 24 HTML / CSS
uniapp+Html5端实现PC端适配
Jul 15 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
Sep 08 HTML / CSS
六种css3实现的边框过渡效果
Apr 22 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安全编程之加密功能
2006/10/09 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
javascript解析json数据的3种方式
2014/05/08 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
在Django中使用Sitemap的方法讲解
2015/07/22 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
对python中return和print的一些理解
2017/08/18 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
python不同版本的_new_不同点总结
2020/12/09 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
波兰珠宝品牌:YES
2019/08/09 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
初中生物教学随笔
2015/08/15 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android