我有一个使用jquery superfish的水平导航菜单。在我的一个下拉菜单中,其中不再有下拉菜单(即没有孙子节点),但有几个孩子(现在确切地说是45个孩子,它可能会及时上升或下降)。我正试图找到一种方法让下拉列表在一定数量之后被列好。 15很适合我,因为有45个。所以没有显示所有包含这里的HTML列表 - 并且为了更少的代码我会使用15:
<ul class="sf-menu sf-js-enabled sf-shadow" id="menu-1">
<li class="current"> <a href="#a" class="sf-with-ul">menu item<span class="sf-sub-indicator"> »</span></a>
<ul style="display: none; visibility: hidden;">
<li> <a href="#aa">menu item</a> </li>
<li> <a href="#ab">menu item</a> </li>
<li> <a href="#ac">menu item</a> </li>
<li> <a href="#ac">menu item</a> </li>
<li> <a href="#ad">menu item</a> </li>
<li> <a href="#aa">menu item</a> </li>
<li> <a href="#ab">menu item</a> </li>
<li> <a href="#ac">menu item</a> </li>
<li> <a href="#ac">menu item</a> </li>
<li> <a href="#ad">menu item</a> </li>
<li> <a href="#aa">menu item</a> </li>
<li> <a href="#ab">menu item</a> </li>
<li> <a href="#ac">menu item</a> </li>
<li> <a href="#ac">menu item</a> </li>
<li> <a href="#ad">menu item</a> </li>
</ul>
</li>
<li> <a href="#">menu item</a> </li>
<li> <a href="#">menu item</a> </li>
<li> <a href="#">menu item</a> </li>
</ul>
所以如果我希望列从5开始,我就有3列。我无法弄清楚我是如何做到这一点而不是打破一切。我尝试过使用一些css并没有找到解决方案。
答案 0 :(得分:3)
如果列表中有45个项目,我建议您使用mega dropdown脚本而不是superfish。
更新:如果你想要一个很好地降级的多列下拉菜单,那么为什么不去寻找一个CSS菜单呢?查看multi-column menu,pro dropdownlist 1,prodropdown list 2,CSS3 multi-slide甚至是vertical flyout list。
更新#3:好的,既然我的OCD强迫我弄明白这一点,我今天在这个问题上工作了一段时间。它不是那么漂亮,但它有效。这是a demo。
您必须稍微重新格式化HTML:
<ul class="sf-menu">
<li>
<a href="#a">menu item</a>
<div class="listwrap">
<div class="listblock">
<ul>
<li><a href="#">menu item</a></li>
...
<li><a href="#">menu item</a></li>
</ul>
</div>
<div class="listblock">
<ul>
<li><a href="#">menu item</a></li>
...
<li><a href="#">menu item</a></li>
</ul>
</div>
</div>
</li>
</ul>
将此CSS添加到标准
.sf-menu .listwrap {
position: absolute;
top: -999em;
max-height: 500px; /* adjust height as desired */
width: 45em; /* adjust width as more columns are added (~10em per column + shadow width */
}
.sf-menu .listblock ul {
position: relative;
display: block;
float: left;
width: 10em;
}
.sf-menu li:hover ul,
.sf-menu li:hover .listwrap, /* added two definitions to existing one */
.sf-menu li.sfHover .listwrap,
.sf-menu li.sfHover ul {
left: 0;
top: 2.5em; /* match top ul list item height */
z-index: 99;
}
.sf-menu li:hover .listblock ul,
.sf-menu li.sfHover .listblock ul {
top: 0;
left: 0;
}