首页 > 代码库 > 原生js实现雪花飘落效果

原生js实现雪花飘落效果

雪花飘落的效果实现步骤:1.使用setInterval定时器每800毫秒创建一个雪花;2.把每一个雪花作为参数传进动态下落的方法中即可。

<style>
    *{padding: 0;margin: 0;}
    body{
        background:#000;
        width: 100%;
        height: 100%;
        overflow:hidden;
    }
</style>
<div id="flame"></div>

js实现代码:

<script>
    

    function Obj(){}  //创建一个对象

    /*为这个对象添加一个具有一个参数的原型方法*/
    Obj.prototype.draw=function(o){
        var speed=0;   //雪花每次下落的数值(10px)
        var startPosLeft=Math.ceil(Math.random()*document.documentElement.clientWidth);//设置雪花随机的开始x值的大小
        o.style.opacity=(Math.ceil(Math.random()*3)+7)/10;  //设置透明度
        o.style.left=startPosLeft+‘px‘;  
        o.style.color="#fff";
        o.style.fontSize=12+Math.ceil(Math.random()*14)+‘px‘;
        setInterval(function(){
            //雪花下落的top值小鱼屏幕的可视区域高时执行下列
            if(speed<document.documentElement.clientHeight){
                o.style.top=speed+‘px‘;
                o.style.left=startPosLeft+Math.ceil(Math.random()*8)+‘px‘;
                speed+=10;
            }
            else{
                o.style.display=‘none‘;
            }
        },400);
    }

    var flame=document.getElementById(‘flame‘);
 
    /*使用setInterval定时器每800毫秒创建一个雪花*/
    setInterval(function(){
        var odiv=document.createElement(‘div‘);  //创建div
        odiv.innerHTML="?";   //div的内容
        odiv.style.position=‘absolute‘;  //div的绝对定位
        flame.appendChild(odiv);   //把创建好的div放进flame中
        var obj=new Obj();   //创建函数
        obj.draw(odiv);  //执行obj的draw方法
    },800);   

</script>

效果图如下:

技术分享

这样雪花飘落的效果就做好了。有什么不足的地方请指正!

原生js实现雪花飘落效果