用js代码和插件实现wordpress雪花飘落效果的四种方法
产生雪花每个雪花都是一个lt;igt;标签,里面放一个“*”来模拟雪花(google那个copy不下来,居然显示为空格,我了个太阳…),然后放到一个大容器叫snowBox里面,产生的个体push进iArray里面收集起来。雪花采用的是以snowBox为参照的绝对定位方式,top为0px,left就用Math.random()*window.screen.width,让雪花随机在屏幕宽度中产生。 用color来控制雪花的颜色深浅产生景深,范围在0~200之间 然后递归调用本身,不停产生雪花。 3、fallDown() 顾名思义就是让雪花飘落,飘落速度speed为2px,即每次纵向下降2px。这个时候做一个检测,如果雪花下降到固定高度下,即比父容器还高,那么就remove掉它,这样可以减轻浏览器的压力,要不然太多雪花会导致浏览器越走越慢,反正已经给overflow:hidden掉看不见了,眼不见为净。然后在纵向下降的同时调用个windBlow函数,让雪花下降的艺术些。 4、windBlow() 一个命名貌似风吹,其实真是风吹的效果(这话更废.哈哈.),利用一个Math.sin()来产生雪花在空中迂回飘荡的效果,这样雪花就不会单调的直线下降,而是蛇形飘落,控制好飘落的间隔,这样连续性比较好,看起来也舒服些。 function letItSnow(){ var snowBox=document.getElementById("snowBox"); var iArray=new Array(); createSnow(snowBox,iArray); } function fallDown(temObj,iArray){ var speed=2; var top=parseInt(temObj.style.top); if(topgt;510){//当到超过高度时候就删了它,减轻浏览器压力 for(var i=0;ilt;iArray.length;i++){ if(temObj==iArray[i]){ iArray.splice(i,1); var snowBox=document.getElementById("snowBox"); snowBox.removeChild(temObj); return false; } } } temObj.style.top=top+speed+"px"; var wind=windBlow(temObj,top); temObj.style.left=parseInt(temObj.style.left)+wind*2+"px"; } function windBlow(temObj,top){ if(parseInt(Math.random())%2==1) return Math.sin(top/16); else return Math.cos(top/16); } function createSnow(snowBox,iArray){ var temObj=document.createElement("i"); var temText=document.createTextNode("*"); temObj.appendChild(temText); temObj.style.left=parseInt(Math.random()*window.screen.width)+"px"; temObj.style.top="0px"; var temNum=parseInt(Math.random()*200); temObj.style.color="#"+temNum.toString(16)+temNum.toString(16)+temNum.toString(16); iArray.push(temObj); snowBox.appendChild(temObj); var temNum=0; while(temNumlt;10){ temNum=parseInt(Math.random()*15); } temObj.style.fontSize=temNum+"px"; var time=0; while(timelt;40){ time=parseInt(Math.random()*50); } temObj.timer=setInterval(function(){ fallDown(temObj,iArray); },time); var snowInterval=0; while(snowIntervallt;500){ snowInterval=parseInt(Math.random()*1000); } var createTimer=setTimeout(function(){ createSnow(snowBox,iArray); clearTimeout(createTimer); },snowInterval); } 演示地址:http://demo.jb51.net/js/2014/snow/ 好了,四个效果代码到此结束。希望能帮到有需要的朋友。如果有什么问题可以在下面留言。 (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |