当我.mensal
将鼠标悬停在.opera
DIV上时,它将触发将鼠标悬停在父DIV上,这对我来说似乎是错误的。我只希望“突出显示”效果在子.opera
DIV
上起作用。
#operaContent {
padding: 0 50px 0 50px;
position: relative;
overflow: visible;
}
#operaContent .opera {
display: block;
border: 1px solid #FFFFFF;
border-bottom: 1px solid #DDDDDD;
padding: 5px;
margin-bottom: 10px;
height: 120px;
background-color: #0A8ECC;
}
#operaContent .opera:hover {
border: 1px solid #AAAAAA;
background-color: #DDDDDD;
cursor: pointer;
}
.mensal {
position: absolute;
top: 1px;
left: 8px;
z-index: 3;
display: block;
}
<div id="operaContent">
<div class="opera">
<div class="mensal">
DIV
</div>
</div>
</div>
根据定义,将鼠标悬停在孩子上,也将鼠标悬停在父母上。html事件中没有“阻止”。
有两个方法链,气泡和捕获。
W3C事件模型中发生的任何事件都首先被捕获,直到到达目标元素,然后再次冒泡。
http://www.quirksmode.org/js/events_order.html
您要停止此操作的唯一方法是通过向页面添加javascript以防止链接来防止冒泡。这在jQuery中很简单
$('.mensal').hover(function(e){
e.stopPropagation();
});
在我看来,在处理CSS时,此答案完全无济于事。Javascript事件不会处理CSS选择器,也不会阻止它们。
不幸的是,仅凭CSS,我不知道实现此目的的方法(甚至在javascript中也可能很棘手)。CSS4选择器将允许您指定选择器的主题以便您可以执行以下操作
#operaContent .opera:hover! .mensal:not(:hover) { /*your css*/ }
但这尚未实施,并且仍在为草案进行开发。
编辑:这是一个应该为您工作的javascript(jQuery)实现
$(function(){
$('.opera').hover(function() {$(this).addClass('hoverIntent')},
function(){ $(this).removeClass('hoverIntent'); }
);
$('.opera .mensal').hover(function() {
$(this).parent('.opera').removeClass('hoverIntent');
});
})
和修改后的CSS
#operaContent {
padding: 0 50px 0 50px;
position: relative;
overflow: visible;
}
#operaContent .opera {
display: block;
border: 1px solid #FFFFFF;
border-bottom: 1px solid #DDDDDD;
padding: 5px;
margin-bottom: 10px;
height: 120px;
background-color: #0A8ECC;
}
#operaContent .opera.hoverIntent {
border: 1px solid #AAAAAA;
background-color: #DDDDDD;
cursor: pointer;
}
.mensal {
position: absolute;
top: 1px;
left: 8px;
z-index: 3;
display: block;
}
问题内容: 如果我有标记: .a类具有与之关联的悬停类 .b类具有与之关联的伪元素…像这样: CSS是否有可能防止伪元素触发.a类悬停? 小提琴 问题答案: 以下CSS为现代浏览器(而非IE10-)提供了诀窍: 允许元素不接收悬停/点击事件。 警告 对非SVG元素的支持处于相对早期的状态。developer.mozilla.org给您以下警告: 在CSS中将指针事件用于非SVG元素是实验性的。 该
问题内容: 我在绝对位置div中的函数遇到麻烦。当鼠标点击div中的一个子元素时,将触发mouseout事件,但是我不希望它触发,直到鼠标不在父绝对div之外。 我如何防止事件在没有jquery的情况下击中子元素而触发。 我知道这与事件冒泡有关,但是我没有运气去寻找解决方法。 但是,该解决方案使用jQuery。 问题答案: 我制作了一个快速的JsFiddle演示,其中包含所有需要的CSS和HTML
问题内容: 考虑以下代码段: 现在,假设外部div有一个与之关联的活动对象。我如何确保在内部任何地方都不会触发直播? 编辑: 这是要求的JS 单击“ .inner-div”时不应触发此操作 问题答案: 您必须向内部子级添加事件侦听器,并取消事件的传播。 在普通JS中,类似 要么
我为侧栏导航制作了这种样式 我制作了一个长方体,并使用“变换”将其隐藏在左侧,以获得弯曲的边界效果。 悬停时,激活ect 边框按钮- 有什么东西可以添加到主div中,以同时激活每个子元素中的悬停效果吗? 现在,只有当我将鼠标悬停在每个单独的元素上时,它才会工作。 任何帮助都非常感谢:)
问题内容: 我有一个div,其内容可能会以各种方式更改:例如,可以通过innerHTML重新加载其整个内容,或者可以通过DOM方法添加节点。反过来,这可能是通过本地javascript发生的,也可能是通过调用jQuery API或其他库间接发生的。 我希望在div的内容改变为执行一些代码,但我 绝对没有控制 上 如何 将改变。确实,我正在设计一个可供其他人使用的小部件,他们可以自由选择自己喜欢的d
问题内容: 这是第二简单的翻转效果,但我仍然找不到任何简单的解决方案。 想要的: 我有一个项目列表和一个相应的幻灯片(DIV)列表。加载后,第一个列表项应被选中(粗体),并且第一张幻灯片应可见。当用户将鼠标悬停在另一个列表项上时,应改为选择该列表项,并显示相应的幻灯片。 以下代码有效,但 很糟糕 。如何以一种优雅的方式获得这种行为?jQuery具有数十种动画效果和复杂的过渡效果,但是我没有想出这种