我正在构建一个像这样的 jsfiddle 的 CSS 菜单:http: //jsfiddle.net/YXT7j/48/
HTML:
<ul id="nav">
<li><a>item 1</a>
<ul class="sub" style="width: 200px;">
<li><a>item 1.1</a>
<ul>
<li><a>item 1.1.1</a></li>
<li><a>item 1.1.2</a></li>
<li><a>item 1.1.3</a></li>
</ul>
</li>
<li><a>item 1.2</a>
<ul>
<li><a>item 1.1.1</a></li>
<li><a>item 1.1.2</a></li>
<li><a>item 1.1.3</a></li>
</ul>
</li>
</ul>
</li>
<li><a>item 2</a>
<ul class="sub">
<li><a>item 2.1</a></li>
<li><a>item 2.2</a></li>
<li><a>item 2.3</a></li>
</ul>
</li>
<li><a>item 3</a>
<ul class="sub">
<li><a>item 3.1</a></li>
<li><a>item 3.2</a></li>
<li><a>item 3.3</a></li>
</ul>
</li>
</ul>
CSS:
#nav>li {
float: left;
margin: 0 10px;
position: relative;
}
.sub {
display: none;
position: absolute;
top: 1em;
left: 0;
}
.sub>li {
float: left;
width: 100px;
}
#nav>li:hover .sub {
display: block;
}
</p>
在第 1 项下,您可以看到 2 个列表彼此相邻。同样在 html 中,您会看到一个内联宽度集。如果没有内联宽度(或等效的 css),列表将显示在彼此下方而不是彼此相邻(http://jsfiddle.net/YXT7j/34/)。
现在子菜单中的列表数量是动态的。这就是为什么我不能在 css 中设置宽度,而我现在使用的是内联样式(100*numlists+'px')。但这只是丑陋的。我希望子菜单像任何其他元素一样调整为其 li-children 的大小。不幸的是,如果没有设置宽度,子菜单将遵循其父菜单项的宽度。
所以,tl/dr:如何在 ul.sub 上不设置明确宽度的情况下获得http://jsfiddle.net/YXT7j/48/ 。
谢谢!