JavaScript 实现简单的碰撞检测效果
作者:半夏时间:2026-10-23 16:30:14浏览:267
本文通过具体的 JavaScript 代码示例,演示了如何在网页中实现简单的碰撞检测效果。通过监听鼠标移动事件,动态计算两个绝对定位元素的坐标关系,判断是否发生重叠。代码包含完整的 HTML 结构、CSS 样式布局以及核心的 JS 交互逻辑,适合前端初学者参考学习。
JS 实现简单的碰撞检测效果
本文通过具体的 JavaScript 代码示例,演示了如何在网页中实现简单的碰撞检测效果。代码包含完整的 HTML 结构、CSS 样式布局以及核心的 JS 交互逻辑,供读者参考学习。
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#all{
width: 500px;
height: 500px;
border: 2px solid sandybrown;
position: relative;
margin: 0 auto;
}
#div1{
width: 50px;
height: 50px;
background-color: red;
position: absolute;
}
#center{
width: 150px;
height: 150px;
background-color: black;
position: absolute;
margin: 175px;
}
</style>
</head>
<body>
<div id="all">
<div id="div1"></div>
<div id="center"></div>
</div>
<script type="text/javascript">
var oAll = document.getElementById("all");
var oDiv1 = document.getElementById("div1");
var oCenter = document.getElementById("center");
var maxL = oAll.clientWidth - oDiv1.clientWidth;
var maxT = oAll.clientHeight - oDiv1.clientHeight;
oDiv1.onmousedown = function(){
var ev = ev || window.event;
var lessX = ev.clientX - oDiv1.offsetLeft;
var lessY = ev.clientY - oDiv1.offsetTop;
document.onmousemove = function(){
var ev = ev || window.event;
var posL = ev.clientX - lessX;
var posT = ev.clientY - lessY;
if(oCenter.offsetLeft-oDiv1.offsetWidth<posL && posL<325 && oCenter.offsetLeft-oDiv1.offsetWidth<posT && posT<325 ){
oCenter.style.backgroundColor = "red"
}else{
oCenter.style.backgroundColor = "black"
}
if(posL<0){
posL = 0;
}
if(posT<0){
posT = 0;
}
if(posL>maxL){
posL = maxL;
}
if(posT>maxT){
posT = maxT;
}
oDiv1.style.left = posL + "px";
oDiv1.style.top = posT + "px";
}
}
document.onmouseup = function(){
document.onmousemove = null;
oDiv1.onmousemove = null;
}
</script>
</body>
上述内容展示了实现该功能的核心代码与思路,希望能为读者的前端开发学习提供有益的帮助。
作者最新文章
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
