综合百科

一招实现“代码雨”的方法

  • 先看看效果

    1、绿色:

    2、彩色:

    3、背景色:

    4、绿色逐渐变浅:

    源代码:

    <!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"><title>Code-byZhenYu.Sha</title><styletype="text/css">html,body{width:100%;height:100%;}body{background:#000;overflow:hidden;margin:0;padding:0;}</style></head><body><canvasid="cvs"></canvas><scripttype="text/javascript">varcvs=document.getElementById("cvs");varctx=cvs.getContext("2d");varcw=cvs.width=document.body.clientWidth;varch=cvs.height=document.body.clientHeight;//动画绘制对象varrequestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame;varcodeRainArr=[];//代码雨数组varcols=parseInt(cw/14);//代码雨列数varstep=16;//步长,每一列内部数字之间的上下间隔ctx.font="bold26pxmicrosoftyahei";//声明字体,个人喜欢微软雅黑functioncreateColorCv(){//画布基本颜色ctx.fillStyle="#242424";ctx.fillRect(0,0,cw,ch);}//创建代码雨functioncreateCodeRain(){for(varn=0;n<cols;n++){varcol=[];//基础位置,为了列与列之间产生错位varbasePos=parseInt(Math.random()*300);//随机速度3~13之间varspeed=parseInt(Math.random()*10)+3;//每组的x轴位置随机产生varcolx=parseInt(Math.random()*cw)//绿色随机varrgbr=0;varrgbg=parseInt(Math.random()*255);varrgbb=0;//ctx.fillStyle="rgb("+r+','+g+','+b+")"for(vari=0;i<parseInt(ch/step)/2;i++){varcode={x:colx,y:-(step*i)-basePos,speed:speed,//text:parseInt(Math.random()*10)%2==0?0:1//随机生成0或者1text:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","s","t","u","v","w","x","y","z"][parseInt(Math.random()*11)],//随机生成字母数组中的一个color:"rgb("+rgbr+','+rgbg+','+rgbb+")"}col.push(code);}codeRainArr.push(col);}}//代码雨下起来functioncodeRaining(){//把画布擦干净ctx.clearRect(0,0,cw,ch);//创建有颜色的画布//createColorCv();for(varn=0;n<codeRainArr.length;n++){//取出列col=codeRainArr[n];//遍历列,画出该列的代码for(vari=0;i<col.length;i++){varcode=col[i];if(code.y>ch){//如果超出下边界则重置到顶部code.y=0;}else{//匀速降落code.y+=code.speed;}//1颜色也随机变化//ctx.fillStyle="hsl("+(parseInt(Math.random()*359)+1)+",30%,"+(50-i*2)+"%)";//2绿色逐渐变浅//ctx.fillStyle="hsl(123,80%,"+(30-i*2)+"%)";//3绿色随机//varr=0;//varg=parseInt(Math.random()*255)+3;//varb=0;//ctx.fillStyle="rgb("+r+','+g+','+b+")";//4一致绿ctx.fillStyle=code.color;//把代码画出来ctx.fillText(code.text,code.x,code.y);}}requestAnimationFrame(codeRaining);}//创建代码雨createCodeRain();//开始下雨吧GO>>requestAnimationFrame(codeRaining);</script></body></html>

    相关文章

  • 象山在哪里
  • 区域车牌号是什么意思
  • 关于清明节谚语
  • petty的意思
  • ABC是什么人
  • 适合女生的微信昵称
  • 川崎是本田旗下的吗?
  • 鼓的打法
  • 杰哥不要啊是什么意思
  • 微信的收藏删了怎样找回
  • 信标
  • 数字签名
  • 对比分析法
  • 正整数
  • 球形摄像机
  • UDP
  • 邓白氏
  • DirectX
  • 文本格式
  • RAID卡