检测两个 div 是否重叠

6

可能重复:
如何使用jquery检测两个div是否相交?

我花了很多时间试图弄清楚如何检测两个div是否重叠。 我尝试了gamequery插件并像这样使用它:

$("#" + checkform).collision("#" + checkform + "w").each(function(){
    alert("Collision");
});

你会使用gamequery插件吗?如果使用,你会怎么做?
2个回答

17

使用getBoundingClientRect()函数检查每个元素,看看它们是否重叠。无需jQuery。


8

这里已经有一个关于如何使用jQuery检测两个div是否相交的问题:How to detect if two divs touch with jquery?

为了参考,我在这里复制代码:

function collision($div1, $div2) {
      var x1 = $div1.offset().left;
      var y1 = $div1.offset().top;
      var h1 = $div1.outerHeight(true);
      var w1 = $div1.outerWidth(true);
      var b1 = y1 + h1;
      var r1 = x1 + w1;
      var x2 = $div2.offset().left;
      var y2 = $div2.offset().top;
      var h2 = $div2.outerHeight(true);
      var w2 = $div2.outerWidth(true);
      var b2 = y2 + h2;
      var r2 = x2 + w2;

      if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2) return false;
      return true;
    }

2
我希望你将这个问题标记为另一个问题的重复。 - Felix Kling
如果其中一个元素旋转了怎么办?如何验证旋转的元素是否重叠? - user3731362

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接