【发布时间】:2015-10-17 11:33:44
【问题描述】:
在我尝试创建大型菜单时,我坚持设置第三级子菜单的样式。第一个子菜单 (li ul) 不显示(显示:无)。然后我有 jquery 脚本,它显示悬停时的子菜单(li ul - 第一级)。如果窗口小于 768 像素,则激活点击功能(对于触摸屏)。
我的问题是当我想设置第三级子菜单的样式时(子菜单的子菜单 - li - ul - li - ul )没有应用样式 - 我希望它始终显示,但被隐藏,显示:无应用于该 UL,但我将其设置为 display: block。所以它只在我悬停它的 LI 元素(li ul li hover)时显示。
所以基本上我想要做的是第一个子菜单(li - ul)在悬停时激活(或单击手机),但第二个子菜单(子菜单的子菜单)始终可见。当我尝试对其进行样式设置时,我会像这样访问它:li ul li ul,这不起作用。我应该如何访问它?此外,当我尝试悬停第三级子菜单时,菜单关闭,我没有像在 jquery 中那样指定它。
HTML
<div class="menu-container">
<ul class="menu">
<li><a href="#">Home</a>
<ul>
<li><a href="#">Ovo je nesto</a>
<ul>
<li><a href="#">aaa</a></li>
</ul>
</li>
<li><a href="#">Ovo je nesto</a></li>
<li><a href="#">Ovo je nesto</a></li>
<li><a href="#">Ovo je nesto</a></li>
</ul>
</li>
<li><a href="#">Who are we?</a>
<ul>
<li>This is mega menu</li>
</ul>
</li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
CSS
.menu-container {
width: 80%;
margin: 0 auto;
background: #333;
}
.menu {
margin: 0 auto;
list-style: none;
padding: 0;
position: relative;
}
.menu:before,
.menu:after {
content: "";
display: table;
}
.menu:after {
clear: both;
}
.menu li {
float: left;
background: #e9e9e9;
padding: 0;
margin: 0;
}
.menu li a {
text-decoration: none;
padding: 1.5em 3em;
display: inline-block;
outline: 0 none;
}
.menu li ul {
display: none;
width: 100%;
background: #333;
padding: 20px;
position: absolute;
z-index: 99;
left: 0;
color: #fff;
margin: 0;
}
.menu li ul li {
margin: 0;
padding: 0;
list-style: none;
width: 25%;
background: none;
float: left;
}
.menu li ul li a {
color: #fff;
padding: .2em 0;
}
.menu li ul li ul {
display: block;
}
.menu li ul li ul li {
display: block;
}
/* ––––––––––––––––––––––––––––––––––––––––––––––––––
960px
–––––––––––––––––––––––––––––––––––––––––––––––––– */
/* ––––––––––––––––––––––––––––––––––––––––––––––––––
TABLETS
–––––––––––––––––––––––––––––––––––––––––––––––––– */
/* ––––––––––––––––––––––––––––––––––––––––––––––––––
MOBILE 100%
–––––––––––––––––––––––––––––––––––––––––––––––––– */
@media only screen and (max-width: 767px) {
.menu > li {
float: none;
width: 100%;
}
.menu > li > ul {
position: relative;
}
.menu > li > ul li {
float: none;
width: 100%;
}
}
jQuery
$(document).ready(function () {
$(".menu li").hover(function () {
if ($(window).width() > 767) {
$('.menu ul li ul').not($(this).children("ul").fadeToggle(200)).hide();
}
});
$(".menu li").click(function () {
if ($(window).width() <= 767) {
$('.menu ul li ul').not($(this).children("ul").fadeToggle(200)).hide();
}
});
});
【问题讨论】:
-
您提供的代码过多且描述过大(在 one 段落中),难以阅读和理解。如果您希望任何人都关注您的问题,而不是在看到问题后立即关闭它,请尝试简化代码并提供更简短、更清晰的问题。最好添加演示。
-
感谢您对我编辑帖子的建议!
标签: javascript jquery html css menu