JS实现小球弹性碰撞及横向滚动条修复方案
本文详细介绍如何使用JavaScript实现多个小球的弹性碰撞动画,涵盖HTML结构搭建、CSS样式定位及JS运动逻辑。重点解决当页面存在右侧滚动条时,小球碰撞屏幕边缘引发的横向滚动条闪现Bug,通过计算滚动条宽度并修正最大运动边界,确保页面布局稳定美观。
HTML结构搭建
HTML结构部分
<body>
<!--只需要做一个大div包裹几个小div即可,你想要几个小球碰撞就在内部做几个div即可,这里我们做了6个小球-->
<div id="main">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</body>
完成上述HTML结构后,接下来为body中的div元素添加基础样式。
CSS样式设置
CSS样式设置
<style type="text/css">
/*将body默认的margin和padding部分去掉*/
*{
margin: 0px;
padding: 0px;
}
/*采用定位的方式,让小球运动起来*/
#main{
margin: 0px auto;
position: relative;
}
/*小球的样式*/
#main div{
overflow: hidden;
position: absolute;
width: 80px;
height: 80px;
opacity: 0.5;
border-radius: 50%;
background-color: red;
}
</style>
为了使小球产生运动效果,需为小球及其父容器设置定位属性,随后通过JavaScript动态修改top、bottom、left、right等坐标值来实现移动。当前小球样式已配置完毕,接下来的JavaScript代码是实现核心功能的关键。
JavaScript核心逻辑与滚动条Bug修复
3.1 Android 事件基础知识
基于前述代码已能实现基本的碰撞检测功能,但仍存在一个潜在缺陷:若网页右侧存在垂直滚动条,当小球撞击屏幕右边缘时,会瞬间触发横向滚动条显示,这在网页设计中属于需要避免的视觉瑕疵。为此,可通过以下代码进行修正。
//滚动条宽度计算函数
function getScrollbarWidth() {
var oP = document.createElement("p"),
styles = {
width: "100px",
height: "100px",
overflowY: "scroll"
}, i, scrollbarWidth;
for (i in styles) oP.style[i] = styles[i];
document.body.appendChild(oP);
scrollbarWidth = oP.offsetWidth - oP.clientWidth;
oP.remove();
return scrollbarWidth;
}
上述代码定义了一个计算滚动条宽度的函数,用于获取右侧垂直滚动条的宽度值。只需在“根据浏览器窗口大小自动调节小球运动空间”的逻辑之前调用该函数即可。
var scrollbarWidth = getScrollbarWidth(); 再修改小球的最大运动宽度 maxW=window.innerWidth-circles[0].clientWidth-scrollbarWidth ;这样这个bug就修改好了。
总结
以上介绍了利用JavaScript实现小球弹性碰撞效果的方法,希望能为读者提供帮助。如有任何疑问,欢迎留言,小编将及时回复!
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
