搜索
查看: 1241|回复: 0

【JS】代码雨特效

[复制链接]

264

主题

373

帖子

827

积分

vip用户

Rank: 6Rank: 6

积分
827

注册会员活跃会员热心会员

QQ
发表于 2020-8-30 12:45:14 来自手机 | 显示全部楼层 |阅读模式
html代码
<canvas id="code_rain_canvas" width="1440" height="900"></canvas>

js 代码
window.onload = function() {
         //获取画布对象
         var canvas = document.getElementById("code_rain_canvas");
         //获取画布的上下文
         var context = canvas.getContext("2d");
         var s = window.screen;
         var W = canvas.width = s.width;
         var H = canvas.height;
         //获取浏览器屏幕的宽度和高度
         //var W = window.innerWidth;
         //var H = window.innerHeight;
         //设置canvas的宽度和高度
         canvas.width = W;
         canvas.height = H;
         //每个文字的字体大小
         var fontSize = 12;
         //计算列
         var colunms = Math.floor(W / fontSize);
         //记录每列文字的y轴坐标
         var drops = [];
         //给每一个文字初始化一个起始点的位置
         for (var i = 0; i < colunms; i++) {
             drops.push(0);
         }
         //运动的文字
         var str = "WELCOME TO WWW.ITRHX.COM";
         //4:fillText(str,x,y);原理就是去更改y的坐标位置
         //绘画的函数
         function draw() {
             context.fillStyle = "rgba(238,238,238,.08)"; //遮盖层
             context.fillRect(0, 0, W, H);
             //给字体设置样式
             context.font = "600 " + fontSize + "px  Georgia";
             //给字体添加颜色
             context.fillStyle = ["#33B5E5", "#0099CC", "#AA66CC", "#9933CC", "#99CC00", "#669900", "#FFBB33", "#FF8800", "#FF4444", "#CC0000"][parseInt(Math.random() * 10)]; //randColor();可以rgb,hsl, 标准色,十六进制颜色
             //写入画布中
             for (var i = 0; i < colunms; i++) {
                 var index = Math.floor(Math.random() * str.length);
                 var x = i * fontSize;
                 var y = drops[i] * fontSize;
                 context.fillText(str[index], x, y);
                 //如果要改变时间,肯定就是改变每次他的起点
                 if (y >= canvas.height && Math.random() > 0.99) {
                     drops[i] = 0;
                 }
                 drops[i]++;
             }
         };

         function randColor() { //随机颜色
             var r = Math.floor(Math.random() * 256);
             var g = Math.floor(Math.random() * 256);
             var b = Math.floor(Math.random() * 256);
             return "rgb(" + r + "," + g + "," + b + ")";
         }
         draw();
         setInterval(draw, 35);
     };
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

温馨提示
1:发帖请遵守《中华人民共和国网络安全法》,发帖内容不得维护国家的、集体的、个人的利益。
2:请勿发布恶意攻击他人的技术文章、工具、和使用教程,发现后删帖处理。
3:本站的目的在于让更多的人了解网络安全,避免受到他人的恶意攻击。
4:本站中的部分文章,可能会出现一些“技术类手段”,但这仅仅为学习演示所用,而非恶意传播技术。
5:本站中的部分文章,可能转载自互联网。如有侵权行为,联系我们删除即可。
6:学习仅是充实头脑,切勿恶意攻击个人、企业等。所造成的法律后果一切由自己承担,本站及其站长概不负责。
我知道了
快速回复 返回顶部 返回列表