就快过年了,先给大家🔥们拜个早年。

🧨🧨🧨

今天我们来学习一下如何在html里加入雪花飘落的特效,需要使用到的知识:画布(Canvas)和js作画。

首先我们先建立一个画布

 var canvas =document.getElementById("canvas")
    var context = canvas.getContext("2d")  //2d 即指二维平面
    var w =window.innerWidth
    var h =window.innerHeight
    canvas.width = w;  //全局分布
    canvas.height =h; 

然后再设置雪花组

 var count =200 //雪花的个数
    var snows=[] //雪花对象数组
    for (var i=0 ; i< count;i++){
        snows.push({
            x:Math.random()*w,    //Math.random()用于生成0~1的随机数
            y:Math.random()*h,
            r:Math.random()*5,
        })
    }

然后制定雪花的样式(圆形比较好用。。。)

 function draw(){
        context.clearRect(0,0,w,h)
        context.beginPath()
        for(var i=0; i<count;i++){
            var snow = snows[i]; 
            context.fillStyle ="rgb(255,255,255)" //设置雪花的样式
            context.shadowBlur=10;
            context.shadowColor="rgb(255,255,255)";


            //moveTo 移动到指定的坐标
            context.moveTo(snow.x,snow.y)
            // 使用canvas arc()创建一个圆形
             //x,y,r:圆的中心的x坐标和y坐标,r为半径
            //0,Math.PI * 2起始弧度和结束弧度
            
            context.arc(snow.x,snow.y,snow.r,0,Math.PI * 2)
            
        }
        //画布填充
        context.fill()
        move()
    }

最后让它们飘起来:

 function move(){
        for (var i=0;i<count;i++){
            var snow =snows[i];
            snow.y +=(7-snow.r)/10 //从上往下飘落
            snow.x+=((5-snow.r)/10)//从左到右飘落
            if(snow.y>h){
                snows[i]={
                    x:Math.random()*w,
                    y:Math.random()*h,
                    r:Math.random()*5,
                }
            }
        }
    }

别忘了设置刷新(频率要调高,不然会感觉很卡)

 draw()
    //每毫秒刷新一次
 setInterval(draw,1)

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐