【发布时间】:2016-03-24 12:44:56
【问题描述】:
所以我正在尝试使用 jQuery 在网站上为我的 topnav 制作一个下拉菜单,并且我已经设法获得了我想要的设计和功能,但是当我不希望菜单在我悬停时隐藏时它,我不知道如何解决这个问题。
https://jsfiddle.net/Lk8cwv5h/1
<nav id="topnav">
<ul>
<li><a href="index.htm">Hem</a></li>
<li class="has-sub"><a href="#">Information ▾</a>
<ul class="dropdown">
<li><a href="#">Om produkterna</a></li>
<li><a href="#">Om oss</a></li>
<li><a href="#">Varför detta?</a></li>
</ul>
</li>
<li><a href="handla.htm">Handla</a></li>
</ul>
</nav>
nav {
background-color: rgb(100,155,255);
border: 1px solid rgb(175, 175, 175);
border-radius: 0 0 1em 1em;
}
nav ul {
position: relative;
display: inline-table;
padding: 0 20px;
}
nav ul:after {
content: "";
clear: both;
display: block;
}
nav ul li {
display: table-cell;
}
nav ul li a {
display: block;
padding: 0.5em 1.5em;
color: black;
font-size: 1.4em;
}
nav ul li a:hover{
text-decoration: none;
}
nav ul li ul li{
display: block;
}
nav ul li ul li a{
font-size: 0.857em;
text-decoration: none;
}
.highlight{
background-color: rgb(175,175,175);
border-radius: 0 0 1em 1em;
opacity: 0.5;
}
.has-sub{
position: relative;
display: inline-block;
}
.dropdown{
background-color: rgb(100,155,255);
z-index: 100;
position: absolute;
text-align: left;
margin-top: 1em;
margin-left: 0.8em;
border: 1px solid rgb(175, 175, 175);
border-top: none;
border-radius: 0 0 1em 1em;
}
//Highlight for menu
$("#topnav").on("mouseenter", "li", function(){
if ($(this).hasClass("has-sub")) {
return;
}
$(this).addClass("highlight");
});
$("#topnav").on("mouseleave", "li", function(){
if ($(this).hasClass("has-sub")) {
return;
}
$(this).removeClass("highlight");
});
//Dropdown for topnav
$(".dropdown").hide();
$("#topnav").on("mouseenter", ".has-sub", function(){
$(this).find(".dropdown").show();
});
$("#topnav").on("mouseleave", ".has-sub", function(){
$(this).find(".dropdown").hide();
});
感谢任何答案,干杯!
【问题讨论】:
-
如果你只能用 css 来实现它,你为什么要用 jquery 来做一个下拉菜单..
标签: jquery html css nav dropdown