使用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 相关文章推荐
HTML5如何适配 iPhone IOS 底部黑条
Mar 09 HTML / CSS
CSS3 3D制作实战案例分析
Sep 18 HTML / CSS
用CSS3实现Win8风格的方格导航菜单效果
Apr 10 HTML / CSS
如何利用CSS3制作3D效果文字具体实现样式
May 02 HTML / CSS
css3实现冲击波效果的示例代码
Jan 11 HTML / CSS
CSS3 清除浮动的方法示例
Jun 01 HTML / CSS
video结合canvas实现视频在线截图功能
Jun 25 HTML / CSS
html5 offlline 缓存使用示例
Jun 24 HTML / CSS
html5的canvas方法使用指南
Dec 15 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
Jul 12 HTML / CSS
canvas拼图功能实现代码示例
Nov 21 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
Aug 21 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
jQuery 树形结构的选择器
2010/02/15 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python中异常重试的解决方案详解
2017/05/05 Python
用python实现刷点击率的示例代码
2019/02/21 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
儿科护士自我鉴定
2013/10/14 职场文书
物流专业毕业生推荐信范文
2013/11/18 职场文书
函授毕业自我鉴定
2013/12/19 职场文书
超市总经理岗位职责
2014/02/02 职场文书
班风学风建设方案
2014/05/06 职场文书
学校运动会广播稿
2014/10/11 职场文书
大一学生个人总结
2015/02/15 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python