UNPKG

halo-theme-dream2.0-plus

Version:

梦之城,童话梦境,动漫类型博客主题。

1 lines 2.76 kB
(()=>{function t(t){this.maxFlake=(t=t||{}).maxFlake||10,this.flakeSize=t.flakeSize||10,this.fallSpeed=t.fallSpeed||1}const a=DreamConfig.effects_snowflake_mode;let h,n,o=null,l=!0,d=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||function(t){setTimeout(t,1e3/60)};function r(t,e,i,s){this.x=Math.floor(Math.random()*t),this.y=Math.floor(Math.random()*e),this.size=Math.random()*i+2,this.maxSize=i,this.speed=+Math.random()+s,this.fallSpeed=s,this.velY=this.speed,this.velX=0,this.stepSize=Math.random()/30,this.step=0}function m(){if(o=null!==(s=localStorage.getItem("night"))?"true"===s:null!==o?o:document.documentElement.classList.contains("night"),"all"===a||"day"===a&&!o||"night"===a&&o){l=!0;var t=this.maxFlake,e=this.flakes;n=this.ctx,h=this.canvas,n.clearRect(0,0,h.width,h.height);for(var i=0;i<t;i++)e[i].update(),e[i].render(n)}else n&&h&&l&&(n.clearRect(0,0,h.width,h.height),l=!1);var s;(that=this).loop=d(function(){m.apply(that)})}window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame||window.oCancelAnimationFrame,t.prototype.start=function(){(function(){var t=document.createElement("canvas");t.id="effects_snowfall",t.width=document.body.offsetWidth,t.height=window.innerHeight,t.setAttribute("class","canvas_effects "+a),t.setAttribute("style","position:fixed;left:0;top:0;width:100%;height:100%;pointer-events:none;"),document.getElementsByTagName("body")[0].appendChild(t),this.canvas=t,this.ctx=t.getContext("2d"),window.onresize=function(){t.width=document.body.offsetWidth,t.height=window.innerHeight}}).apply(this),function(){for(var t=this.maxFlake,e=this.flakes=[],i=this.canvas,s=0;s<t;s++)e.push(new r(i.width,i.height,this.flakeSize,this.fallSpeed))}.apply(this),m.apply(this)},r.prototype.update=function(){this.x,this.y,this.velX*=.98,this.velY<=this.speed&&(this.velY=this.speed),this.velX+=Math.cos(this.step+=.05)*this.stepSize,this.y+=this.velY,this.x+=this.velX,(this.x>=h.width||this.x<=0||this.y>=h.height||this.y<=0)&&this.reset(h.width,h.height)},r.prototype.reset=function(t,e){this.x=Math.floor(Math.random()*t),this.y=0,this.size=Math.random()*this.maxSize+2,this.speed=+Math.random()+this.fallSpeed,this.velY=this.speed,this.velX=0},r.prototype.render=function(t){var e=t.createRadialGradient(this.x,this.y,0,this.x,this.y,this.size);e.addColorStop(0,"rgba(255, 255, 255, 0.9)"),e.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),e.addColorStop(1,"rgba(255, 255, 255, 0)"),t.save(),t.fillStyle=e,t.beginPath(),t.arc(this.x,this.y,this.size,0,2*Math.PI),t.fill(),t.restore()},new t({maxFlake:Utils.isMobile()?20:90}).start()})();