我正在创建一个与水平子菜单垂直的导航菜单。
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;
}
两个菜单都是绝对定位的,子菜单需要位于父菜单选项的右侧。
我在子菜单的每个菜单选项中添加了一个浮动,但它们保持垂直并且不会水平移动。如何让子菜单保持水平?
你可以在这个小提琴中看到结果:
答案 0 :(得分:3)
演示 http://jsfiddle.net/vS9dY/7/
解释:很简单,
#sidenav > .menu > .option > .submenu > .menu > .option
上,
移除float:left;
并对其应用display:inline-block;
。 .menu
申请white-space:nowrap;
以阻止inline-block
.option
换行到下一行。line-height:50px;
应用于.option
以垂直居中文本。所以:
.menu {
list-style-type: none;
padding: 0;
margin: 0;
white-space:nowrap;
}
.option {
width: 100px;
height: 50px;
line-height:50px;
text-align: center;
}
#sidenav > .menu > .option > .submenu > .menu > .option {
display:inline-block;
}
答案 1 :(得分:0)
“非常简单” - 令人敬畏的是更好的形容词 我很喜欢这个Q&amp; A,+ 1&amp;感谢两者。
list-style-type: none;
让我看看div是否会给出相同的结果。他们这样做。
<html>
<head>
<style>
#sidenav
{ position:absolute; top:0; left:0; bottom:0; width:100px;
background:#ccc; outline:1px dashed black; }
/* - - - - using lists - - - - */
ul
{ list-style-type:none; padding:0; margin:0; }
ul
{ white-space:nowrap; }
li
{ width:100px; height:50px; line-height:50px; text-align:center; }
.ulmenu > li
{ position:relative; background:#fdd; }
.subulmenu
{ position:absolute; top:0; left:100px; background:#dfd; }
.subulmenu > li
{ display:inline-block; background:#ddf; }
/* - - - - using divs - - - - */
.divmenu
{ white-space:nowrap; }
.divmenu > div, .subdivmenu > div
{ width:100px; height:50px; line-height:50px; text-align:center; }
.divmenu > div
{ position:relative; background:#fdd; }
.subdivmenu
{ position:absolute; top:0; left:100px; background:#dfd; }
.subdivmenu > div
{ display:inline-block; background:#ddf; }
</style>
</head>
<body>
<div id="sidenav">
<ul class="ulmenu"><!-- using lists -->
<li>Home</li>
<li>About</li>
<li>More...
<ul class="subulmenu">
<li>First</li>
<li>Second</li>
<li>Thrid</li>
</ul>
</li>
</ul>
<div class="divmenu"><!-- using divs -->
<div>Home2</div>
<div>About2</div>
<div>More2...
<div class="subdivmenu">
<div>First2</div>
<div>Second2</div>
<div>Thrid2</div>
</div>
</div>
</div>
</div>
</body>
</html>