js雪花飘落特效

js雪花飘落特效

1.概述

   随着前端技术的发展,网页上的特效也逐渐丰富了起来,页面美观度得到大大的提升,今天我就给大家分享一个js雪花飘落特殊效的实现方式,特别适合元旦、圣诞、新年等节日的气氛烘托。

2.效果图如下:

 

3.主要功能

支持雪花的随机飘落,

支持动画过度,

支持雪花的旋转,

支持透明度的缓慢减少,

支持对已经降落完成的雪花进行时时删除,大大减小了浏览器的负担。

4.实现方式

我这里写的是一个满屏的雪花飘落特效,所以先定义一个容器,设置高度为100%overflowhidden;然后就是用js代码来实现具体操作。

首先定义一个全局的容器节点对象和一个数组,用来存放新随机出来的img节点。

第二步,设置一个定时器,用来不断随机产生雪花,我这里用的是创建img节点的方式来创建雪花,创建一个就把它放在数组里面,当然还有其他的方式,设置每个雪花的动画时间,设置雪花的样式,随机出雪花的初始位置、结束位置和旋转的角度,设置img节点额外的属性来存储随机产生的数值,方便下面调用。代码如下:

//开启定时器,产生雪花

           setInterval(function(){

                var img=document.createElement("img");

                img.src="img/xue.gif";

                div.appendChild(img);

                array.push(img);

 

                img.style.position="absolute";

                img.style.top="0px";

                img.style.webkitTransition="all 10s";

                //随机雪花大小

                var imgWidth=parseInt(Math.random()*10000000)%14+12;

                img.width=imgWidth;

 

                //随机雪花位置

                var left=parseInt(Math.random()*10000000)%(screen.availWidth-imgWidth);

                img.style.left=left+"px";

                //随机雪花结束位置

                var leftDown=parseInt(Math.random()*10000000)%(screen.availWidth-imgWidth);

                var topDown=screen.availHeight+parseInt(Math.random()*10000000)%(100);

                //随机雪花角度

                var deg=parseInt(Math.random()*10000000)%360+360;

 

                //自定义两个属性 用来存储随机的结束位置

                img.setAttribute("leftDown",leftDown);

                img.setAttribute("topDown",topDown);

                img.setAttribute("deg",deg);

            },40);

第三步,再设置一个定时器,不断循环所有的雪花,设置每个雪花的终止状态和旋转角度,如果已经设置完,就从数组里将其删除,以免造成浏览器负载过大。代码如下:

  setInterval(function(){

//              setTimeout(function(){

                    downAnimation();

//              },1);

            },50);

        }

        /***

         * 雪花下落动画特效

         */

        function downAnimation(){

            //循环所有的雪花,改变每个雪花的落地位置

            for(var i=0;i<array.length;i++){

                var snow=array[i];

                //将处理完的删除

                array.splice(i,1);

                //校验是否已经设置完终点状态了

                if(parseInt(snow.style.top)){

                    continue;

                }

                //获取雪花与生俱来的终止状态

                var leftDown=snow.getAttribute("leftDown");

                var topDown=snow.getAttribute("topDown");

                var deg=snow.getAttribute("deg");

 

                //重新改变left和top

                snow.style.left=leftDown+"px";

                snow.style.top=topDown+"px";

 

                //重新改变雪花的角度

                snow.style.transform="rotate("+deg+"deg)";

 

                //改变透明度

                snow.style.opacity=0;

            }

 

        }

第四步,再设置一个定时器,每隔一秒判断一下新创建的img中的雪花图片,是否已经超越了屏幕大小,如果雪花距离顶端的距离超过屏幕的可用高度,就将这个img节点删除。也是为了减小浏览器的负担。

 

到目前为止,雪花飘落特效的功能已经基本完成了,而且简单使用,另外由于篇幅问题,先给大家分享到这里,大家也可以继续完善一下自己的代码。后续还会有更多的分享给大家,敬请期待。

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值