Скрипт падающего снега на canvas от uSearch by myateznik.
Всё просто, пихаешь код на страницу в конец body и наблюдаешь. =)
Код
<script>try{var cnv=document.body.appendChild(document.createElement('canvas')),ctx=cnv.getContext('2d'),fks=new Array(0|Math.abs(innerWidth/innerHeight)*137.4).fill({});addEventListener('resize',function(){cnv.width=innerWidth;cnv.height=innerHeight});cnv.style.position='fixed';cnv.style.left=cnv.style.top=0;cnv.style.pointerEvents='none';cnv.width=innerWidth;cnv.height=innerHeight;fks=fks.map(function(flk){return {x:0|Math.random()*cnv.width,y:0|Math.random()*cnv.height,size:Math.random()*2+1,speed:Math.random()+.5,opacity:Math.random()*.5+.3,velX:0,velY:0,step:0,stepSize:Math.random()/160}});void function snow(){requestAnimationFrame(snow);ctx.clearRect(0,0,cnv.width,cnv.height);fks.forEach(function(flk){!flk.velX&&(flk.velX=flk.speed);flk.velX*=.98;flk.velY<=flk.speed&&(flk.velY=flk.speed);flk.velX+=Math.cos(flk.step+=.05)*flk.stepSize;ctx.save();ctx.fillStyle='rgba(255,255,255,'+flk.opacity+')';flk.x+=flk.velX;flk.y+=flk.velY;(flk.y>=cnv.height||flk.x>=cnv.width)&&(flk.x=0|Math.random()*cnv.width,flk.y=0,flk.size=Math.random()*2+1,flk.speed=Math.random()+.5,flk.velY=flk.speed,flk.velX=0,flk.opacity=Math.random()*.5+.3);ctx.beginPath();ctx.arc(flk.x,flk.y,flk.size,0,Math.PI*2);ctx.fill();ctx.restore()})}();}catch(e){};</script>