2 つの div が重なっているかどうかを検出するにはどうすればよいですか?
div の幅を考慮しないと、基本的に垂直の線分になります。(上、左) ポイントはポイント A であり、下 (上 + 高さ) はポイント B などです。次に、各 div を divs 配列内の他の div と比較し、衝突する div の配列を作成します。ただし、これをプログラムで行う方法に行き詰まっています。
これは私のdivの配列です:
var divs = [
{class:'A', top:0, left:0, height:'60px'},
{class:'B', top:50, left:60, height:'60px'},
{class:'C', top:30, left:10, height:'60px'},
{class:'D', top:100, left:180, height:'60px'},
{class:'E', top:80, left:50, height:'60px'},
{class:'F', top:110, left:200, height:'60px'},
{class:'G', top:55, left:80, height:'60px'}
];
これが私が始めた機能です:
this.collide = function( divs )
{
var collidingDivs = [], z = events.length;
for(i; i<z; i++)
{
if
(
// Begin pseudocode
( divsB.top >= divsA.top ) &&
( (divsB.top + divsB.height) <= (divsA.top + divsA.height) )
)
{
collidingDivs.push(divs[i].class);
}
}
console.log(collidingDivs); // Array of divs that overlap (collide)
};
私はこの時点で完全に立ち往生しています。各 div を反復処理して、他の div と衝突するかどうかを確認するにはどうすればよいですか?