JS实现动态星空背景效果
本文实例为大家分享了JS实现动态星空背景的具体代码,供大家参考,具体内容如下
这里我截取的是一个图片,实际上是会动的。废话不多说,上代码。
HTML:
CSS:
/*cssreset*/ body,p,div,ol,ul,li,dl,dt,dd,h1,h2,h3,h4,h5,h6,form,input,iframe,nav{ margin:0; padding:0; } html,body{ width:100%; height:100%; } body{ font:14pxMicrosoftYaHei; -webkit-text-size-adjust:100%; -moz-user-select:none; -webkit-user-select:none; user-select:none; position:relative; background:#000; } #canvas{ width:100%; height:100%; display:block; opacity:.8; }
JS:
//音量大小,0.01-1 //宇宙特效 varcanvas=document.getElementById('canvas'), ctx=canvas.getContext('2d'), w=canvas.width=window.innerWidth, h=canvas.height=window.innerHeight, hue=217, stars=[], count=0, maxStars=1100;//星星数量,默认1300 varcanvas2=document.createElement('canvas'), ctx2=canvas2.getContext('2d'); canvas2.width=100; canvas2.height=100; varhalf=canvas2.width/2, gradient2=ctx2.createRadialGradient(half,half,0,half,half,half); gradient2.addColorStop(0.025,'#CCC'); gradient2.addColorStop(0.1,'hsl('+hue+',61%,33%)'); gradient2.addColorStop(0.25,'hsl('+hue+',64%,6%)'); gradient2.addColorStop(1,'transparent'); ctx2.fillStyle=gradient2; ctx2.beginPath(); ctx2.arc(half,half,half,0,Math.PI*2); ctx2.fill(); //Endcache functionrandom(min,max){ if(arguments.length<2){ max=min; min=0; } if(min>max){ varhold=max; max=min; min=hold; } returnMath.floor(Math.random()*(max-min+1))+min; } functionmaxOrbit(x,y){ varmax=Math.max(x,y), diameter=Math.round(Math.sqrt(max*max+max*max)); returndiameter/2; //星星移动范围,值越大范围越小, } varStar=function(){ this.orbitRadius=random(maxOrbit(w,h)); this.radius=random(60,this.orbitRadius)/10;//星星大小,值越大星星越小,默认8 this.orbitX=w/2; this.orbitY=h/2; this.timePassed=random(0,maxStars); this.speed=random(this.orbitRadius)/80000;//星星移动速度,值越大越慢,默认5W this.alpha=random(2,10)/10; count++; stars[count]=this; } Star.prototype.draw=function(){ varx=Math.sin(this.timePassed)*this.orbitRadius+this.orbitX, y=Math.cos(this.timePassed)*this.orbitRadius+this.orbitY, twinkle=random(10); if(twinkle===1&&this.alpha>0){ this.alpha-=0.05; }elseif(twinkle===2&&this.alpha<1){ this.alpha+=0.05; } ctx.globalAlpha=this.alpha; ctx.drawImage(canvas2,x-this.radius/2,y-this.radius/2,this.radius,this.radius); this.timePassed+=this.speed; } for(vari=0;i以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。