使用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制作卡片式图片的方法
Jul 08 HTML / CSS
Grid 宫格常用布局的实现
Jan 10 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
Jul 11 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
Jun 08 HTML / CSS
html5实现完美兼容各大浏览器的播放器
Dec 26 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
Sep 21 HTML / CSS
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
Mar 15 HTML / CSS
Html5页面中的返回实现的方法
Feb 26 HTML / CSS
快速实现一个简单的canvas迷宫游戏的示例
Jul 04 HTML / CSS
css中有哪些方式可以隐藏页面元素及区别
Jun 16 HTML / CSS
使用CSS实现按钮边缘跑马灯动画
May 07 HTML / CSS
CSS link与@import的区别和用法解析
May 07 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+xml实现在线英文词典查询的方法
2015/01/23 PHP
PHP实现懒加载的方法
2015/03/07 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
Python列表解析配合if else的方法
2018/06/23 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
区三好学生主要事迹
2014/01/30 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书