简体   繁体   English

CSS下拉菜单-悬停消失

[英]Css Dropdown Menu - Hover disappear

When the mouse icon gets on the drop down menus, hover shouldn't be disappearing. 当鼠标图标出现在下拉菜单上时,悬停不应该消失。 How can I do it guys? 伙计们,我该怎么办?

Fiddle 小提琴

 .m-navbar ul li{float: left; font-weight: 500; font-size: 20px;margin-left: 25px;list-style:none;} .m-navbar ul li a{color:#2d3438;border-radius: 4px;padding: 7px 25px;text-decoration:none;} .m-navbar ul li a:hover{text-decoration: none; background-color: #656a6f;border-radius: 4px;color: #ffc000;} .m-navbar ul li ul{display: none;width: 200px;float: left;background-color: #ffc000;margin: 9px 0 0 0;position: absolute;padding: 5px 0 ;border-radius:4px;} .m-navbar ul li:hover ul {display: block;} .m-navbar ul li ul li a:hover{background-color: #ffc000;color: #ffffff;} 
 <div class="m-navbar"> <ul> <li> <a href="">Home</a> <ul> <li><a href="#">Laptops</a></li> <li><a href="#">Monitors</a></li> <li><a href="#">Printers</a></li> </ul> </li> <li> <a href="">References</a> <ul> <li><a href="#">Laptops</a></li> <li><a href="#">Monitors</a></li> <li><a href="#">Printers</a></li> </ul> </li> <li><a href="">About Me</a> </li> <li><a href="">Contact</a></li> </ul> </div> 

Because of your 9px top margin defined in your CSS there is a gap between the top buttons and the drop down menu. 由于CSS中定义了9px的上边距,因此顶部按钮和下拉菜单之间会有间隙。 If the mouse triggers over that gap then the hover is cancelled and everything disappears. 如果鼠标触发该间隙,则悬停将取消,并且所有内容都将消失。

Either remove the gap, or replace the gap with an actual element, like an HR element like so: 删除间隙,或用实际元素(例如HR元素)替换间隙,如下所示:

<li>
    <a href="">Home</a>
    <hr />
    <ul>        
        <li><a href="#">Laptops</a></li>
        <li><a href="#">Monitors</a></li>
        <li><a href="#">Printers</a></li>
    </ul>
</li>

Then edit your CSS and remove the 9px margin from .m-navbar ul li ul 然后编辑CSS并从.m-navbar ul li ul中删除9px边距

Then create the HR styling: 然后创建人力资源样式:

.m-navbar ul li hr { border: 0px; .m-navbar ul li hr {border:0px; padding: 0px; 填充:0px; margin: 9px 0px 0px 0px; 边距:9px 0px 0px 0px; } }

Just change : 只是改变 :

.m-navbar ul li a:hover{text-decoration: none; background-color: #656a6f;border-radius: 4px;color: #ffc000;}

to

.m-navbar ul li:hover > a{text-decoration: none; background-color: #656a6f;border-radius: 4px;color: #ffc000;}

This will do the trick because the :hover is fired only to the <li> element but <a> is no longer hovered 之所以会成功,是因为:hover仅触发了<li>元素,而<a>却不再悬停

Update: 更新:

.m-navbar ul li{float: left; font-weight: 500; font-size: 20px;margin-left: 25px;list-style:none;}

By adding a 9px padding-bottom: 通过添加一个9px的padding-bottom:

.m-navbar ul li{float: left; font-weight: 500; font-size: 20px;margin-left: 25px;list-style:none; padding-bottom: 9px;}

As seen here: http://jsfiddle.net/gzd4ygmd/5/ 如此处所示: http : //jsfiddle.net/gzd4ygmd/5/

我认为您所面临的问题是由于链接和下拉菜单之间存在间隙,因此您所要做的就是为您的-navbar ul li a类提供一个零余量的类,因此它看起来像这样:

.m-navbar ul li a{color:#2d3438;border-radius: 4px;padding: 7px 25px;text-decoration:none;margin:0}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM