javascript - 如何检测两个div是否正在接触/碰撞检测

标签 javascript html css collision

我已经在 Google 和此处进行了搜索,但没有找到适合我的问题的答案

(这是一个非常简单的解释) 我有两个 div 可以被用户移动(使用 JavaScript 和点击事件)我需要检测这两个 div 是否相互接触/重叠,以及它们是否要触发一个功能我在这里看到了答案但是他们都用jQuery,我想用纯JS

可能有用的是两个 div 都在 css 中设置了绝对位置和不同的 z-index

编辑:澄清一下,因为我的解释很差,两个 div 中的一个是固定的,第二个只能在 Y 方向上移动,但是在 Y 方向上移动的 div 正在使用案例动画旋转

最佳答案

可能有更好的方法(这不是很干)但它应该可以工作,只需用您的 div ID 替换“div1”和“div2”:

let div1 = document.getElementById('div1').getBoundingClientRect();
let div1Top = div1.top;
let div1Left = div1.left;
let div1Right = div1.right
let div1Bottom = div1.bottom

let div2 = document.getElementById('div2').getBoundingClientRect();
let div2Top = div1.top;
let div2Left = div1.left;
let div2Right = div1.right
let div2Bottom = div1.bottom

if ((div2Top > div1Top && div2Top < div1Bottom)||(div2Bottom > div1Top && div2Bottom < div1Bottom)) {
  let verticalMatch = true
} else{
  let verticalMatch = false
}

if ((div2Right > div1Left && div2Right < div1Right)||(div2Left < div1Right && div2Left > div1Left)) {
  let horizontalMatch = true
} else {
  let horizontalMatch = false
}

if (horizontalMatch && vertialMatch){
  let intersect = true
} else {
  let intersect = false
}

关于javascript - 如何检测两个div是否正在接触/碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50378855/

相关文章:

javascript - Heroku - 更新的 JavaScript 和 CSS 未加载

javascript - colorbox 在 ExpressionEngine 嵌入中不起作用(youtube 弹出窗口)

javascript - 在悬停动态时显示/隐藏 div

css - 字体粗细在桌面浏览器和 iOS 浏览器上呈现不同

javascript - 显示/隐藏 div 并撤消每个 div jQuery 的隐藏

javascript - 如何垂直居中模态?

javascript - 单击特定的 div 元素时移除文本的透明度。

javascript - inArray 无法与 ajax 响应正常工作

php - 将按钮并排放置在 css 的 while 循环中

javascript - 减少宽度后我应该如何移动div?