使用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 sprite简单实例
May 23 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
May 28 HTML / CSS
字中字效果的实现【html5实例】
May 03 HTML / CSS
html5手机端页面可以向右滑动导致样式受影响的问题
Jun 20 HTML / CSS
HTML实现代码雨源码及效果示例
Feb 25 HTML / CSS
Html5嵌入钉钉的实现示例
Jun 04 HTML / CSS
HTML5公共页面提取作为公用代码的方法
Jun 30 HTML / CSS
在html页面中取得session中的值的方法
Aug 11 HTML / CSS
详解淘宝H5 sign加密算法
Aug 25 HTML / CSS
小程序实现悬浮按钮的全过程记录
Oct 16 HTML / CSS
html中两种获取标签内的值的方法
Jun 10 HTML / CSS
分享几个实用的CSS代码块
Jun 10 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
解析thinkphp的左右值无限分类
2013/06/20 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
php依赖注入知识点详解
2019/09/23 PHP
php源码的安装方法和实例
2019/09/26 PHP
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
javascript解析json实例详解
2014/11/05 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
jQuery实现增删改查
2020/12/22 jQuery
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
python解析yaml文件过程详解
2019/08/30 Python
学Python 3的理由和必要性
2019/11/19 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
工程监理应届生求职信
2013/11/09 职场文书
中式婚礼主持词
2014/03/13 职场文书
2015年车间管理工作总结
2015/07/23 职场文书