使用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实现黑客帝国数字雨效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
做网页有很多软件,原来经常使用frontpage来实现,现在用dreamweaver比较专业,...
前端开发经常会遇到的一个问题就是制作一个弹框来向用户提示信息,在这个弹框弹...
网页中的图片经常会做一些鼠标经过点击等效果,该怎么制作呢?今天我们就来看看...
在html中如果要把多余的文字显示为省略号,那么有以下几种方法: 单行文本: !DO...
data URI scheme 允许我们使用内联(inline-code)的方式在网页中包含数据,可以...
1.首先呢session的key-value都是存在server的,浏览器HTML页面是没有办法直接取...
效果:标题自带序号,代码块配色,代码块左上角仿mac图标 先打开主题文件夹 文件...
使用 line-height 垂直居中 line-height:24px; 使用固定宽度的容器并且需要一行...
本部分主要是 CavsZhouyou 在练习《剑指 Offer》时所做的笔记,主要涉及算法相关...
video对象 兼容性写法 video controls source src=data/demo.ovg source src=dat...