【发布时间】:2014-05-04 00:47:01
【问题描述】:
我正在创建一个带有水平子菜单的垂直导航菜单。
HTML:
<div id="sidenav">
<ul class="menu">
<li class="option">
<span class="label">Home</span>
</li>
<li class="option">
<span class="label">About</span>
</li>
<li class="option">
<span class="label">More...</span>
<div class="submenu">
<ul class="menu">
<li class="option">
<span class="label">First</span>
</li>
<li class="option">
<span class="label">Second</span>
</li>
<li class="option">
<span class="label">Thrid</span>
</li>
</ul>
</div>
</li>
</ul>
</div>
CSS:
#sidenav {
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 100px;
color: #fff;
background-color: #000;
}
.menu {
list-style-type: none;
padding: 0;
margin: 0;
}
.option {
width: 100px;
height: 50px;
text-align: center;
}
#sidenav > .menu > .option {
position: relative;
}
#sidenav > .menu > .option > .submenu {
position: absolute;
top: 0;
left: 100px;
color: #fff;
background-color: #ddd;
}
#sidenav > .menu > .option > .submenu > .menu > .option {
float: left;
}
两个菜单都是绝对定位的,子菜单需要位于父菜单选项的右侧。
我在子菜单中的每个菜单选项左侧添加了一个浮动,但它们保持垂直并且不会水平。如何使子菜单水平?
你可以在这个 fiddle 中看到结果:
【问题讨论】:
-
喜欢这个? jsfiddle.net/9yMxt
-
@JoshCrozier 是的,但在您的示例中,您为子菜单指定了宽度。我无法指定每个子菜单的宽度,因为它们可能都有不同数量的项目...
-
这是我能想到的唯一选择 - jsfiddle.net/5MXtb - 不需要宽度。
-
@JoshCrozier 似乎是使用固定位置的技巧。为什么这甚至行得通?