我正在动态生成多级菜单,并希望此菜单无需使用任何JavaScript的jQuery即可正常显示,此阶段菜单只有两个级别。
以下是动态生成的菜单结构
<div id="cssmenu">
<ul >
<li><a href="/en/">Home</a></li>
<li><a href="/en/">Menu 1</a></li>
<li><a href="/en/menu2/">Menu 2</a></li>
<li><a href="/en/menu3/">Menu 3</a></li>
<li><a href="/en/menu4/">Menu 4</a></li>
<li><a href="/en/menu5">Menu 5</a>
<ul class="/en/menu5/menu5-1/">
<li><a href="">Menu 5.1</a></li>
<li><a href="">Menu 5.2</a></li>
<li><a href="">Menu 5.3</a></li>
</ul>
</li>
<li><a href="/en/menu6/">Menu 6</a></li>
</ul>
</div>
多层次使用JS https://codepen.io/anon/pen/RMrqmQ
我需要一个指向良好示例的指针,我已经查找了示例,但所有这些都为UL&amp; li我的动态菜单ul..li清理,以便用户可以根据需要自定义
更新
使用codepen,似乎运行良好https://codepen.io/anon/pen/bvEzwe
.nav ul {
list-style: none;
background-color: #444;
text-align: center;
padding: 0;
margin: 0;
}
.nav li {
font-family: 'Oswald', sans-serif;
font-size: 1.2em;
line-height: 40px;
text-align: left;
}
.nav a {
text-decoration: none;
color: #fff;
display: block;
padding-left: 15px;
border-bottom: 1px solid #888;
transition: .3s background-color;
}
.nav a:hover {
background-color: #005f5f;
}
.nav a.active {
background-color: #aaa;
color: #444;
cursor: default;
}
/* Sub Menus */
.nav li li {
font-size: .8em;
}
@media screen and (min-width: 650px) {
.nav li {
width: 130px;
border-bottom: none;
height: 50px;
line-height: 50px;
font-size: 1.4em;
display: inline-block;
margin-right: -4px;
}
.nav a {
border-bottom: none;
}
.nav > ul > li {
text-align: center;
}
.nav > ul > li > a {
padding-left: 0;
}
/* Sub Menus */
.nav li ul {
position: absolute;
display: none;
width: inherit;
}
.nav li:hover ul {
display: block;
}
.nav li ul li {
display: block;
}
}
答案 0 :(得分:0)
可能会有所帮助
我将你的一些悬停改为它的嵌套ul。我的意思是为悬停和嵌套direct child selector(>)
位置添加ul
。
.nav ul {
list-style: none;
background-color: #444;
text-align: center;
padding: 0;
margin: 0;
}
.nav li {
font-family: 'Oswald', sans-serif;
font-size: 1.2em;
line-height: 40px;
text-align: left;
position: relative; /* added for it's absolute child */
}
.nav a {
text-decoration: none;
color: #fff;
display: block;
padding-left: 15px;
border-bottom: 1px solid #888;
transition: .3s background-color;
}
.nav a:hover {
background-color: #005f5f;
}
.nav a.active {
background-color: #aaa;
color: #444;
cursor: default;
}
/* Sub Menus */
.nav li li {
font-size: .8em;
}
/******************************************* Style menu for larger screens Using 650px (130px each * 5 items), but ems or other values could be used depending on other factors ********************************************/
@media screen and (min-width: 650px) {
.nav li {
width: 130px;
border-bottom: none;
height: 50px;
line-height: 50px;
font-size: 1.4em;
display: inline-block;
margin-right: -4px;
}
.nav a {
border-bottom: none;
}
.nav > ul > li {
text-align: center;
}
.nav > ul > li > a {
padding-left: 0;
}
/* Sub Menus */
.nav li ul {
position: absolute;
display: none;
width: inherit;
}
.nav > ul > li:hover > ul {
display: block;
}
.nav li > ul > li:hover ul { /* change hover to nested li */
display: block;
}
.nav li > ul > li ul { /* change position to it's nested parent */
top: 0;
right: -100%;
}
.nav li ul li {
display: block;
}
}
<div class="nav">
<ul>
<li><a href="/en/">Home</a></li>
<li><a href="/en/">Menu 1</a></li>
<li><a href="/en/menu2/">Menu 2</a>
<ul class="/en/menu5/menu5-1/">
<li><a href="">Menu 2.1</a></li>
<li><a href="">Menu 2.2</a>
<ul class="/en/menu5/menu5-1/">
<li><a href="">Menu 2.2.1</a></li>
<li><a href="">Menu 2.2.2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="/en/menu3/">Menu 3</a></li>
<li><a href="/en/menu4/">Menu 4</a></li>
<li><a href="/en/menu5">Menu 5</a>
<ul class="/en/menu5/menu5-1/">
<li><a href="">Menu 5.1</a>
<ul class="/en/menu5/menu5-1/">
<li><a href="">Menu 5.1.1</a></li>
<li><a href="">Menu 5.1.2</a></li>
</ul>
</li>
<li><a href="">Menu 5.2</a>
<ul class="/en/menu5/menu5-1/">
<li><a href="">Menu 5.2.1</a></li>
<li><a href="">Menu 5.2.2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="/en/menu6/">Menu 6</a></li>
</ul>
</div>