检测两个相交圆形元素的悬停
Detect Hover for two intersecting Circular elements
我在jsFiddle(http://jsfiddle.net/aRWhm/)上做了一个例子,这个想法是知道什么时候我结束了,让我们说红色和蓝色圆圈之间的交集。但问题是,每次我到达十字路口时,红色圆圈的类"is-over"都会被删除。目录:
<div>
<span id="Div1"></span>
<span id="Div2"></span>
<span id="Div3"></span>
<span id="Div4"></span>
</div>
.CSS:
div {
display: block;
margin: 0 auto;
overflow: hidden;
width: 950px;
}
span {
display: block;
position: absolute;
opacity: 0.5;
border-radius: 999px;
z-index: 1;
}
#Div1 {
background-color: #FF0000;
height: 200px;
left: 50px;
top: 80px;
width: 200px;
}
#Div2 {
background-color: #0000FF;
height: 150px;
left: 40px;
top: 230px;
width: 150px;
}
#Div3 {
background-color: #008000;
height: 250px;
left: 100px;
top: 190px;
width: 250px;
}
#Div4 {
background-color: #FFFF00;
height: 100px;
left: 200px;
top: 130px;
width: 100px;
}
JavaScript:
$(document).ready(function () {
$("#Div1").hover(
function () {
$(this).addClass("is-over");
},
function () {
$(this).removeClass("is-over");
}
);
$("#Div2").hover(
function () {
$(this).addClass("is-over");
},
function () {
$(this).removeClass("is-over");
}
);
$("#Div3").hover(
function () {
$(this).addClass("is-over");
},
function () {
$(this).removeClass("is-over");
}
);
$("#Div4").hover(
function () {
$(this).addClass("is-over");
},
function () {
$(this).removeClass("is-over");
}
);
});
你去吧。
一、守则:
(function($){
$.mlp = {x:0,y:0}; // Mouse Last Position
function documentHandler(){
var $current = this === document ? $(this) : $(this).contents();
$current.mousemove(function(e){jQuery.mlp = {x:e.pageX,y:e.pageY}});
$current.find("iframe").load(documentHandler);
}
$(documentHandler);
$.fn.ismouseover = function(overThis) {
var result = false;
this.eq(0).each(function() {
var $current = $(this).is("iframe") ? $(this).contents().find("body") : $(this);
var offset = $current.offset();
result = offset.left<=$.mlp.x && offset.left + $current.outerWidth() > $.mlp.x &&
offset.top<=$.mlp.y && offset.top + $current.outerHeight() > $.mlp.y;
});
return result;
};
})(jQuery);
$(document).ready(function () {
$("#myDiv").mousemove(
function() {
$("#myDiv").children("span").each(function(){
if($(this).ismouseover())
$(this).addClass("is-over");
else
$(this).removeClass("is-over");
});
});
});
现在解释一下:
我无耻地从伊万·卡斯特拉诺斯(Ivan Castellanos)的这个答案中窃取了.ismouseover()
代码,并将其重新用于您的需求。表单在那里,我使用了一个.mousemove()
事件来触发每次您在父容器中时,您可以在此小提琴中看到需要为它提供高度和宽度参数以确保它有一个边界框。
最后,我只是检查一下你在哪些圈子上,并将is-over
类添加到其中。小提琴基于安东的工作,尽管它提供了交叉点支撑而不是将一个移动到顶部。
希望这有帮助。
相关文章:
- 在元素悬停上显示带有javascript的弹出式网站
- 防止子元素悬停破坏父元素悬停
- jquery集合元素悬停
- 父元素悬停/活动/聚焦时隐藏元素
- 显示隐藏的容器元素 - 悬停仅在我单击容器后有效
- JQUERY可排序插件,当可拖动元素悬停在指定的元素上时启动函数
- Jquery 阻止堆叠元素悬停
- 在其他元素悬停时开始/暂停 HTML5 视频
- 在元素悬停时闪烁,同时尝试在同一事件上缩小其大小
- 如何使 li 元素悬停在动态
- "text长度"Internet Explorer中svg文本元素悬停时的更改
- 元素悬停时的暂停功能
- 将变量传递给Google Maps事件对象.(谷歌地图多边形,外部元素悬停)
- 更改多个图像/元素悬停在覆盖的图像HTML
- 如何在元素悬停时动态改变文本
- 当一个元素悬停在另一个元素上时高亮显示
- 显示/隐藏多个元素悬停与JQuery和HTML
- 如何使用jquery将显示为none的元素悬停
- jQuery, JavaScript,工作与3元素悬停
- 在元素悬停时触发javascript