我使用jQuery解决了mouseenter / mouseleave问题,显然当我将鼠标放在子元素上时会触发mouseleave操作。
我拥有http://jsfiddle.net/theylooksotired/ucarF/1/
中的所有代码HTML:
<div class="menuAll">
<div class="menuIns">
<div class="menuInsTop">
<a href="http://localhost/ilki/expertise">Expertise</a>
</div>
<div class="menuInsBottom" style="display: none;">
<div class="menuInsBottomIns">
<a href="http://localhost/ilki/expertise#notre-offre">Notre offre</a>
<a href="http://localhost/ilki/expertise#conseil">Conseil</a>
<a href="http://localhost/ilki/expertise#architecture">Architecture</a>
<a href="http://localhost/ilki/expertise#formation">Formation</a>
</div>
</div>
</div>
<div class="menuIns">
<div class="menuInsTop">
<a href="http://localhost/ilki/carrieres">Carrierès</a>
</div>
<div class="menuInsBottom" style="display: none;">
<div class="menuInsBottomIns">
<a href="http://localhost/ilki/expertise#notre-offre">Notre offre</a>
<a href="http://localhost/ilki/expertise#conseil">Conseil</a>
<a href="http://localhost/ilki/expertise#architecture">Architecture</a>
<a href="http://localhost/ilki/expertise#formation">Formation</a>
</div>
</div>
</div>
<div class="menuIns">
<div class="menuInsTop">
<a href="http://localhost/ilki/a-propos">A propos</a>
</div>
<div class="menuInsBottom" style="display: none;">
<div class="menuInsBottomIns">
<a href="http://localhost/ilki/expertise#notre-offre">Notre offre</a>
<a href="http://localhost/ilki/expertise#conseil">Conseil</a>
<a href="http://localhost/ilki/expertise#architecture">Architecture</a>
<a href="http://localhost/ilki/expertise#formation">Formation</a>
</div>
</div>
</div>
<div class="menuIns">
<div class="menuInsTop">
<a href="http://localhost/ilki/echangeons">Echangeons</a>
</div>
<div class="menuInsBottom" style="display: none;">
<div class="menuInsBottomIns">
<a href="http://localhost/ilki/expertise#notre-offre">Notre offre</a>
<a href="http://localhost/ilki/expertise#conseil">Conseil</a>
<a href="http://localhost/ilki/expertise#architecture">Architecture</a>
<a href="http://localhost/ilki/expertise#formation">Formation</a>
</div>
</div>
</div>
<div class="menuIns">
<div class="menuInsTop">
<a href="http://localhost/ilki/contact">Contact</a>
</div>
</div>
</div>
JS:
$('.menuIns').mouseenter(function(){
$(this).find('.menuInsBottom').css('display', 'block');
});
$('.menuIns').mouseleave(function(){
$(this).find('.menuInsBottom').css('display', 'none');
});
CSS:
.menuAll {
text-align: center;
padding-top: 50px;
}
.menuAll a {
font-size: 1.1em;
color: #A2B5BE;
padding: 0px 5px;
}
.menuInsBottom {
position: absolute;
left: 10px;
top: 80px;
display: none;
}
.menuInsBottom a{
padding: 5px 10px;
padding-right: 50px;
display: block;
font-size: 0.9em;
}
.menuInsBottom a:hover{
background: #ECF0F2;
}
.menuInsBottomIns {
background: #FFF;
border:2px solid #A2B5BE;
text-align: left;
}
.menuIns,
.menuInsTop {
display: inline;
}
.menuIns {
position: relative;
cursor: pointer;
padding-top: 50px;
}
.menuIns:hover {
color: #000;
}
.menuIns:hover a{
color: #000;
}
我在这里搜索了几个问题,但似乎没有一个我正在寻找。
答案 0 :(得分:2)
如果您通过将top:80px
更改为top:70px
来进行重叠,则可能会在mouseleave
触发之前进入孩子。理想情况下,您的鼠标会经过一个不在父母之外的区域,以便接触到孩子......您希望通过“重叠”来避免这种情况。
.menuInsBottom {
.....
top: 70px;
这样你就可以看到是什么让mouseleave
触发了一下,看看下面那个在父母身边有边框的演示....看看父母或孩子都没有的差距。 请注意,由于absolute
定位,孩子在外面...通常孩子会在父母内部。
答案 1 :(得分:1)
正如在这个问题的另一个答案中所提到的,问题来自于子元素绝对定位并且菜单项和子菜单之间存在间隙。
解决此问题的一种方法是将.menuInsBottom的CSS设置为以下内容:
.menuInsBottom {
position: absolute;
left: 10px;
top: 65px;
display: none;
padding-top: 10px;
}
通过子菜单的填充触摸链接边缘来解决问题。您可以在此jsfiddle
中查看结果答案 2 :(得分:0)
我认为我有解决方案......问题来自&#34;显示:内联&#34;在父元素(menuIns)中。如果我使用&#34; display:block&#34;的正确组合和&#34;浮动&#34;我可以解决问题了。