如何使用JavaScript检测重叠的HTML元素?
我有一个项目列表(<ul>
)。它使用JavaScript上下滑动。当它向下滑动时,根据项目的数量,它可能与另一个元素(<div>
)重叠,这个元素此时是绝对定位的(可以更改)。
当<ul>
与<div>
重叠时,如何将新样式应用于<div>
以暂时隐藏它或将其移动一点,以防止重叠?
当它们重叠时,它看起来并不好看。)
在这里你可以看到,我在说什么:http://timetable.raj.fvds.ru/
非常感谢!
答案 0 :(得分:9)
function isObjOnObj(a,b){
var al = a.left;
var ar = a.left+a.width;
var bl = b.left;
var br = b.left+b.width;
var at = a.top;
var ab = a.top+a.height;
var bt = b.top;
var bb = b.top+b.height;
if(bl>ar || br<al){return false;}//overlap not possible
if(bt>ab || bb<at){return false;}//overlap not possible
if(bl>al && bl<ar){return true;}
if(br>al && br<ar){return true;}
if(bt>at && bt<ab){return true;}
if(bb>at && bb<ab){return true;}
return false;
}
答案 1 :(得分:0)
为什么不将UL的z-index提升到高于底部的div?
添加:
#wrap {
z-index : 2;
position : relative;
}
答案 2 :(得分:0)
这感觉就像碰撞检测一样,刚刚发布了一个解决方案。相反,我建议计算一个菜单重叠需要多少列表项(即10),并在选择这些菜单(10 div
)时隐藏li
。