如何使用JavaScript检测重叠(重叠)的元素?

时间:2011-04-19 18:21:13

标签: javascript jquery html css

如何使用JavaScript检测重叠的HTML元素?

我有一个项目列表(<ul>)。它使用JavaScript上下滑动。当它向下滑动时,根据项目的数量,它可能与另一个元素(<div>)重叠,这个元素此时是绝对定位的(可以更改)。

<ul><div>重叠时,如何将新样式应用于<div>以暂时隐藏它或将其移动一点,以防止重叠?
当它们重叠时,它看起来并不好看。)

在这里你可以看到,我在说什么:http://timetable.raj.fvds.ru/

非常感谢!

3 个答案:

答案 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