使用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设计地图上的雷达定位提示效果
Apr 05 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
May 13 HTML / CSS
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
Nov 21 HTML / CSS
详解CSS3中常用的样式【基本文本和字体样式】
Oct 20 HTML / CSS
HTML5 File接口在web页面上使用文件下载
Feb 27 HTML / CSS
html5 button autofocus 属性介绍及应用
Jan 04 HTML / CSS
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
Jan 30 HTML / CSS
html5桌面通知(Web Notifications)实例解析
Jul 07 HTML / CSS
Canvas制作旋转的太极的示例
Mar 09 HTML / CSS
关于canvas绘制模糊问题的解决方法
Sep 24 HTML / CSS
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
Jun 04 HTML / CSS
CSS3新特性详解(五):多列columns column-count和flex布局
Apr 30 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使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
Python使用gensim计算文档相似性
2016/04/10 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
顶岗实习协议书
2015/01/29 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
MySQL 数据类型选择原则
2021/05/27 MySQL
Nginx缓存设置案例详解
2021/09/15 Servers
JAVA springCloud项目搭建流程
2022/05/11 Java/Android
nginx之内存池的实现
2022/06/28 Servers