js中怎么制作一个一直运动的小球

这篇博客介绍了如何使用JavaScript来制作一个在容器内不断运动的小球。通过获取元素、设置速度、判断边界并反向移动,实现了小球在屏幕上的往返滚动效果。点击开始按钮,小球开始运动,当触碰容器边缘时会改变运动方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<div class="box">
            <div class="wrapper">
                <div class="boll"></div>
            </div>
            <button>开始</button>
        </div>

.wrapper{
                width: 600px;
                height: 600px;
                border: 5px solid black;
                margin: 0 auto;
                position: relative;
            }
            .wrapper .boll{
                width: 80px;
                height: 80px;
                border-radius: 50%;
                background-color: red;
                position: absolute;
                bottom: 0;
                left: 0;
            }
            .box{
                text-align: center;
            }
            .box button{
                width: 200px;
                height: 50px;
                color:white;
                font-size: 30px;
                border: none;
                background-color: green;
            }
            //这个是div的样式如上代码

<script>
            //获取容器
            var _wrapper=document.querySelector(".wrapper");
            //开始按钮
            var _button=document.querySelector("button");
            //小球
            var _boll=document.querySelector(".boll");
            _button.οnclick=function(){
                var speedX=6;  //x速度
                var speedY=10;  //y速度

                 //设置一个计算器
                 var id=setInterval(function(){
                     //获取现有的left和top值
                     //如果到最右边,需要反方向
                     if(_wrapper.clientWidth-_boll.offsetLeft<=_boll.offsetWidth){
                         speedX*=-1;
                     }
                    _boll.style.left=(_boll.offsetLeft+speedX)+"px"
                    
                     //如果到最上边,需要反方向
                    if(_boll.offsetTop<=0){
                        speedY*=-1;
                    }
                    
                    _boll.style.top=(_boll.offsetTop-speedY)+"px"
                    
                    //到最下边,需要反向
                    if(_wrapper.clientHeight-_boll.offsetTop<=_boll.offsetHeight){
                        speedY*=-1;
                    }
                    
                    //到最左边,需要反向
                    if(_boll.offsetLeft<=0){
                        speedX*=-1;
                    }
                 },100) 
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值