原生js-雪花飘飘

好好学习 ,天天向上。Are you ready?在这里插入图片描述

话不多说,代码奉上!
css部分:(雪花图片 自行寻找)

 .snow
        {
            width: 80px;
            height: 84px;
            background-image: url("img/snow.png");
            background-size: 100% 100%;
            position: absolute;

        }

js部分:

class Snow{
            constructor(){
                this.snow=null;
                this.bool=true;
                this.deg=0;
                this.s=Math.random()*0.2+0.1;
            }
            createSnow(x,y){
                if(!this.snow){
                    this.snow=document.createElement("div");
                }
                this.snow.className="snow";
                this.snow.style.opacity="1";

                this.snow.style.transform=`rotate(${this.deg}deg) scale(${this.s},${this.s})`;
                this.snow.style.left=x-this.snow.offsetWidth/2+"px";
                this.snow.style.top=y+"px";
                return this.snow;
            }
            update(){
                if(!this.bool) return;
                this.deg+=3;
                this.snow.style.transform=`rotate(${this.deg}deg) scale(${this.s},${this.s})`;
                this.snow.style.opacity=Number(this.snow.style.opacity)-0.002;
                this.snow.style.top=this.snow.offsetTop+0.5+"px";
                if(this.s>0.2){
                    this.snow.style.left=this.snow.offsetLeft+0.5+"px";
                }else{
                    this.snow.style.left=this.snow.offsetLeft-0.6+"px";
                }
                if(Number(this.snow.style.opacity)<=0){
                    this.bool=false;
                }
            }
        }


        let arr=[];
        let time=3;
        document.documentElement.style.overflow="hidden";
        animation();
        function animation() {
            requestAnimationFrame(animation);
            let list=[];
            for(let i=0;i<arr.length;i++){
                arr[i].update();
                if(!arr[i].bool){
                    arr[i].snow.remove();
                    arr[i]=null;
                }else{
                    list.push(arr[i]);
                }
            }
            arr=list.concat();
            list=null;

            time--;
            if(time>0) return;
            time=Math.floor(Math.random()*8);
            let snow=new Snow();
            document.body.appendChild(snow.createSnow(Math.random()*document.documentElement.clientWidth,-50));
            arr.push(snow);

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值