编辑:请参阅下面我自己的答案(2016)
例如:
<ul> <li class="first"><a href="#" title="">Home</a></li> <li><a href="#" title="">Chi siamo</a> <ul><li><a href="#" title="">item1</a></li><li><a href="#" title="">item2</a></li></ul> </li> <li><a href="#" title="">Novità</a></li> <li><a href="#" title="">Promozioni</a></li> </ul>
然后设计风格:
/* level 1 Main menu ----------------------------------------- */ #main-menu > ul{ list-style:none; } #main-menu > ul > li{ float:left; display:block; position:relative; margin-left:1em; } #main-menu > ul > li.first{ margin-left:0; } /* sub Main menu ----------------------------------------- */ #main-menu > ul > li ul { position: absolute; z-index:1000; display:none; left:0; top:28px; } #main-menu > ul > li:hover ul { display:inline-block; } #main-menu > ul > li ul li{ float:left; display:block; list-style:none; }
好.所以,我有主菜单,显示水平.我还希望子菜单显示水平.但由于某种原因,ul框不会调整大小以达到总li标签宽度,因此它保持垂直.父亲ul不会遇到这个问题.
我可以通过简单地为孩子ul添加适当的宽度来使其工作,但这不是我想要使用的方式.
任何的想法?
解决方法
如果您使用绝对位置,则重要的是:将鼠标悬停两次;第一个在li上,触发显示:阻止,然后在触发器上显示的ul上.
然后保持定位和造型分开:我称之为a而不是li
然后保持定位和造型分开:我称之为a而不是li
看这里:
http://jsfiddle.net/HerrSerker/T8x2r/2/
#main-menu > ul > li > ul:hover,#main-menu > ul > li:hover > ul { display: block; }
应该使用float:left也是
http://jsfiddle.net/T8x2r/3/