私はこの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') を使用しています。しかし、それはただ醜いです。他の要素と同様に、サブメニューをその子のサイズに合わせてサイズ変更したいと思います。残念ながら、幅を設定しないと、サブメニューは代わりにその親メニュー項目の幅に従います。
tl/dr: ul.sub に明示的な幅を設定せずにhttp://jsfiddle.net/YXT7j/48/を取得するにはどうすればよいですか。
ありがとう!