【发布时间】:2013-08-06 02:31:42
【问题描述】:
我有下拉菜单(仅限 CSS)
JSFIDDLE:
HTML:
<div class="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Tutorials</a>
<ul>
<li><a href="#">Photoshop</a></li>
<li><a href="#">Illustrator</a></li>
<li><a href="#">Web Design</a>
<ul>
<li><a href="#">HTML</a>
<ul>
<li><a href="#">HTML 4 and less</a>
<ul>
<li><a href="#">TEST 1</a></li>
<li><a href="#">TEST 2</a></li>
<li><a href="#">TEST 3</a></li>
</ul>
</li>
<li><a href="#">HTML 5</a></li>
</ul>
</li>
<li><a href="#">CSS</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Articles</a>
<ul>
<li><a href="#">Web Design</a></li>
<li><a href="#">User Experience</a></li>
</ul>
</li>
<li><a href="#">Inspiration</a></li>
</ul>
</div>
CSS:
.menu {
margin: 100px auto;
text-align: center;
}
.menu ul ul {
display: none;
}
.menu ul li:hover > ul {
display: block;
white-space:nowrap;
}
.menu ul {
background: #efefef;
padding: 0;
list-style: none;
position: relative;
display: inline-table;
}
.menu ul:after {
content: "";
clear: both;
display: block;
}
.menu ul li {
float: left;
}
.menu ul li:hover {
background: blue;
}
.menu ul li:hover a {
color: #fff;
}
.menu ul li a {
display: block;
padding: 10px;
color: #757575;
text-decoration: none;
}
.menu ul ul {
background: green;
padding: 0;
position: absolute;
top: 100%;
}
.menu ul ul li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid yellow;
position: relative;
}
.menu ul ul li a {
padding: 10px;
color: #fff;
display: block;
}
.menu ul ul li a:hover {
background: red;
}
.menu ul ul ul {
position: absolute;
left: 100%;
top:0;
padding: 0;
}
.menu ul ul ul li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid pink;
position: relative;
}
.menu ul ul ul li a {
padding: 10px;
color: #fff;
display: block;
}
.menu ul ul ul li a:hover {
background: red;
}
.menu ul ul ul ul {
position: absolute;
left: 100%;
top:0;
}
正如您在最后一个子菜单中看到的,它们不是上层菜单。它们环绕文本并缩小(最小宽度)。
问:
如何使它们相等(与父级宽度相同)并且不换行?- 如何简化此菜单(父、子、ul > li 等),以便我不需要为每个新的子菜单制作新样式
提前谢谢你。
【问题讨论】:
-
请注意,如果您有 4 级深度的子菜单,那么就用户体验而言,这可能不是最佳的。
-
那些只是为了紧急情况,因为有些用户愚蠢地制作了4级子菜单;)
标签: css drop-down-menu submenu