3

我有一个使用 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,但没有找到解决方案。

4

1 回答 1

3

如果列表中有 45 个项目,我建议您使用大型下拉脚本而不是 superfish。

更新:如果你想要一个可以很好地降级的多列下拉菜单,那么为什么不直接使用 CSS 菜单呢?查看多列菜单专业下拉列表 1、专业下拉列表 2CSS3 多幻灯片甚至垂直弹出列表


更新#3:好的,因为我的强迫症迫使我想办法解决这个问题,所以我今天在这方面工作了一段时间,哈哈。它不是那么漂亮,但它确实有效。这是一个演示

您必须稍微重新格式化 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;
}
于 2010-05-28T21:54:31.607 回答