Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detecting whether two divs overlap [duplicate]

Possible Duplicate:
How to detect if two divs touch with jquery?

I've spent a lot of time trying to figure out how to detect if two divs are overlapping.
I tried the gamequery plugin and used it like this:

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

Would you use the gamequery plugin and/or how would you do it?

like image 684
Johannes Flood Avatar asked Dec 23 '12 16:12

Johannes Flood


2 Answers

Use getBoundingClientRect() on each element, and see if they overlap that way. No jQuery needed.

like image 53
Niet the Dark Absol Avatar answered Sep 24 '22 13:09

Niet the Dark Absol


There is already a query here having an answer : How to detect if two divs touch with jquery?

For reference I copy the code here:

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;
    }
like image 35
Amar Avatar answered Sep 21 '22 13:09

Amar