【发布时间】:2015-12-19 05:13:03
【问题描述】:
我有一个问题,我想检测一个元素是否在一页中被另一个元素覆盖。
例如:
DOM elements
<div class="ele ele1"><p>A</p></div>
<div class="ele ele2"><p>B</p></div>
<div class="ele ele3"><p>C</p></div>
<div class="cover"><p>D</p></div>
CSS style
.ele{
display: inline-block;
width: 100px;
height: 100px;
position: relative;
}
p{
width: 100%;
text-align: center;
}
.ele1{
background-color: red;
}
.ele2{
background-color: blue;
}
.ele3{
background-color: green;
}
.cover{
position: absolute;
width: 100px;
height: 100px;
left: 300px;
top: 10px;
background: grey;
}
http://jsfiddle.net/veraWei/6v89b1fy/
如何检测元素A未被覆盖但元素C被ele D覆盖? 还有一件事:“D”的数量是不确定的。页面中可能有 E/F/G...。 我感谢所有想法或现有示例/jQuery 插件/CSS/等。
感谢大家的详细回答。但是我需要更简短的解释,也许一个属性表明 A 没有被任何元素覆盖,而 C 被渲染覆盖。是否存在任何插件或属性?
【问题讨论】:
-
不明白这个问题。你说的被覆盖是什么意思?你的意思是重叠元素吗?
-
你的意思是c被d覆盖了?
-
抱歉,我更新了编辑。 A,B,C,D只是一个符号,我的意思是如何检测在C区域之外我们无法看到完整区域的称为D的元素?但是我们可以看到 A 和 B 的所有像素。
-
如果您想检查该元素是否被任何其他元素从左侧或右侧或顶部或底部覆盖,这个问题的答案将非常复杂..
-
var coverLeft = $(".cover").offset().left; if (coverLeft >= $(".ele3").offset().left && coverLeft <= $(".ele3").offset().left + $(".ele3").width()) { console.log("element C is (horizontal)covered") }
标签: javascript jquery