HTML+JS 特效- 浮动气泡

1 篇文章 0 订阅

浮动气泡 特效

实现代码

在HTML中添加canvas的条目,然后将下面的JS代码copy到下面。两个定时器分别实现更新canvas和更新气泡大小位置等等。

window.onload = function(){
            var oc = document.querySelector("canvas");
            if (oc.getContext){
                var ctx = oc.getContext("2d");
                var arr = [];
                setInterval(function(){
                    console.log(arr);
                    // 在绘画之前,对数组arr内部的参数值进行改变,以达到运动的效果
                    ctx.clearRect(0,0,oc.width,oc.height);
                    for(var i =0;i<arr.length;i++){
                        arr[i].degree++;
                        arr[i].x = arr[i].startX + Math.sin(arr[i].degree* Math.PI/180)*arr[i].step*2;
                        arr[i].y = arr[i].startY - (arr[i].degree* Math.PI/180)*arr[i].step*5;
                        console.log(arr[i].y);
                        if (arr[i].y <= arr[i].r){
                            arr.splice(i,1); 
                        }
                        arr[i].alp-=0.001;
                    }
                    //对已经更改好的数组对应的圆进行绘画。
                    for (var i = 0; i<arr.length; i++){
                        ctx.save();
                        ctx.fillStyle = "rgba("+arr[i].red+","+arr[i].green+","+arr[i].blue+","+arr[i].alp+")";
                        ctx.beginPath();
                        ctx.arc(arr[i].x,arr[i].y,arr[i].r,0,2*Math.PI);
                        ctx.fill();
                        ctx.restore();
                    }
                },1000/60);
                // 在arr中注入随机圆信息
                setInterval(function(){
                    var x = Math.random()*oc.width;
                    var r = Math.random()*10+5;
                    var y = oc.height -r ;
                    var red = Math.round(Math.random()*255);
                    var green = Math.round(Math.random()*255);
                    var blue = Math.round(Math.random()*255);
                    var alp = 1;
                    var degree = 0;
                    var startX = x;
                    var startY = y;
                    var step = 10;
                    arr.push({
                        x: x,
                        y: y,
                        r: r,
                        red: red,
                        green: green,
                        blue: blue,
                        alp : alp,
                        degree : degree,
                        startX: startX,
                        startY: startY,
                        step: step
                    });
                },200)
            }

实现效果

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Volavion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值