实现任意个球在窗口中四处乱碰的效果。

本文介绍了一种使用HTML、CSS和JavaScript实现多个球体在网页上随机碰撞的动画效果的方法。通过点击按钮,用户可以添加新的球体,每个球体的颜色随机生成,球体会根据窗口边界反弹,创造出真实感的物理效果。
摘要由CSDN通过智能技术生成

实现任意个球在窗口中四处乱碰的效果。


在这里插入图片描述
点击按钮,每次可以添加一个小球
核心代码如下:

<body>
<div id="one_box"></div>
<br>
<button>点击添加小球</button>
<script>
   var divs=document.querySelectorAll("div");
   var one_box=document.getElementById("one_box");
    //获得视口的宽度
    var viewClient = document.documentElement || document.body;
    var viewWidth = viewClient.clientWidth;
    var viewHeight = viewClient.clientHeight;
    var button=document.querySelector("button");
    //x轴的初始速度
   button.onclick=function () {
       var div=document.createElement("div");
       var color=random(0,0xffffff+1);
      // console.log(color);
       color=color.toString(16);
       //console.log(color);
       div.style.backgroundColor='#'+color;

       document.body.insertBefore(div,one_box);
       var divs=document.querySelectorAll("div");
       for (var i=0;i<divs.length;i++){
           run(divs[i]);
       }
   };
   const INTERVAL = 5;
    function run(obj) {
        var speedX=0;
        var speedY=0;
        //获得内部或者外部样式
        var styles = getStyles (obj);
       obj.timer=setInterval(function () {
            var left = parseInt (styles.left);
            if (left <= 0) {//左边界
                speedX =random(0,4);
              //  console.log(speedX);
            }
            if(left >=viewWidth - obj.offsetWidth){//右边界
                speedX = - (random(0,4));
            }
            //修改div的left样式
            obj.style.left =left + speedX+"px";

            var top = parseInt (styles.top);

            if (top <= 0) {
                speedY =random(0,4);
            }
            if(top >= viewHeight - obj.offsetHeight){//右边界
                speedY = -(random(0,4));
            }
            //修改div的left样式
            obj.style.top = top + speedY + "px";
        },INTERVAL);
    }
</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值