首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JavaScript检测元素重叠(覆盖)?

如何使用JavaScript检测元素重叠(覆盖)?
EN

Stack Overflow用户
提问于 2011-04-20 02:21:13
回答 3查看 17.1K关注 0票数 6

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

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

如何检测<ul>与此<div>重叠时,如何对<div>应用新样式以临时隐藏它或将其向下移动一点以防止重叠?

当它们重叠时,看起来并不好)

在这里您可以看到,我正在讨论的内容:http://timetable.raj.fvds.ru/

非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-20 02:26:59

代码语言:javascript
复制
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;
}
票数 10
EN

Stack Overflow用户

发布于 2011-04-20 02:29:59

这感觉像是碰撞检测,并且刚刚发布了一个解决方案。相反,我建议计算出一个菜单需要多少列表项才能重叠(即10个),并在这些菜单(具有10个li)被选中时隐藏div

票数 0
EN

Stack Overflow用户

发布于 2011-04-20 02:29:12

为什么不直接将UL的z索引提升到底部的div之上呢?

添加:

代码语言:javascript
复制
#wrap {
    z-index  : 2;
    position : relative;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5720837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档