<script> const div1 = document.getElementById('div1') const div2 = document.getElementById('div2') function move(domElement) { domElement.onmousedown = function (e) { const mouseX = e.clientX, mouseY = e.clientY, oldLeft = domElement.offsetLeft, oldTop = domElement.offsetTop document.onmousemove = function (e) { const x = e.clientX, y = e.clientY domElement.style.left = oldLeft + (x - mouseX) + 'px' domElement.style.top = oldTop + (y - mouseY) + 'px' console.log(isCrash(div1, div2)) } document.onmouseup = function () { document.onmousemove = null } } } move(div2) move(div1) function isCrash(obj1, obj2) { return !(obj1.offsetLeft + obj1.offsetWidth < obj2.offsetLeft || obj1.offsetTop + obj1.offsetHeight < obj2.offsetTop || obj2.offsetLeft + obj2.offsetWidth < obj1.offsetLeft || obj2.offsetTop + obj2.offsetHeight < obj1.offsetTop) } //!反义 括号里面是两图形不相交的情况,加上! </script>
这段代码实现了两个HTML元素的拖动,并且检测它们是否相交。具体来说,代码中定义了一个`move`函数,接受一个DOM元素作为参数,当该元素被鼠标按下时,会触发`mousedown`事件,开始拖动元素。在拖动过程中,`mousemove`事件会不断触发,根据鼠标移动的距离,更新元素的`left`和`top`样式属性,实现拖动的效果。当鼠标松开时,会触发`mouseup`事件,停止拖动。
另外,代码中还定义了一个`isCrash`函数,用于检测两个元素是否相交。该函数接受两个DOM元素作为参数,通过比较它们的位置和大小,判断它们是否相交。如果两个元素相交,则返回`true`,否则返回`false`。
需要注意的是,该代码中的元素拖动和碰撞检测都是在客户端(浏览器)中进行的,因此不会对服务器造成任何影响。
标签:obj1,obj2,domElement,拖动,元素,碰撞,测试,offsetTop From: https://www.cnblogs.com/dadaya123/p/17478481.html