【问题标题】:Simplest JQuery animated navbar with multi-level dropdowns具有多级下拉菜单的最简单的 JQuery 动画导航栏
【发布时间】:2016-05-14 02:04:54
【问题描述】:

我正在为一个网站创建一个导航栏,我需要一种非常简单的方法来创建从主栏到带有进一步下拉级别的下拉列表的 2 个级别的下拉列表。

我正在使用没有额外插件的 JQuery。

“最简单”是指最少的代码行和最少的变量,因此加载时间最快。

我尝试过使用 hover() 事件,但这似乎不起作用。

以下是 HTML 示例:

<div class="menu">
   <ul>
       <li><a href="#">Link 1</a></li>
       <li><a href="#">Link 2</a>
           <ul class="sub">
               <li><a href="#">Sub 1</a>
                   <ul class="sub2">
                       <li><a href="#">Sub 2</a></li>
                   </ul>
               </li>
           </ul>
       </li>
   </ul>
</div>

理想情况下,将鼠标悬停在“Link 2”上将使子列表向下滑动,将鼠标悬停在“Sub 1”上将使子列表在其旁边向下滑动。

另外,我在大多数维度上都使用了百分比,所以如果它以相同的方式缩放会非常有用。

如果需要更多信息,请在否决之前询问。

谢谢。

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    最好的 jQuery 不是 jQuery。

    .menu input {
      position: absolute;
      left: -9999px;
    }
    .menu label {
      cursor: pointer;
      display: block;
    }
    .menu label:after {
      content: '...';
    }
    .sub {
      display: none;
    }
    .menu label:hover+input+.sub,
    .menu input:checked+.sub,
    .sub:hover {
      display: block;
    }
    <div class="menu">
       <ul>
           <li><a href="#">Link 1</a></li>
           <li>
               <label for="menu-2">Link 2</label>
               <input type="checkbox" id="menu-2" />
               <ul class="sub">
                   <li>
                       <label for="menu-2-1">Sub 1</label>
                       <input type="checkbox" id="menu-2-1" />
                       <ul class="sub">
                           <li><a href="#">Sub 2</a></li>
                       </ul>
                   </li>
               </ul>
           </li>
       </ul>
    </div>

    根据需要添加更多 CSS。

    【讨论】:

    • 这行得通,但它不仅可以动画,还可以悬停而不是鼠标点击,因为链接本身会转到其他页面。
    • 我添加了悬停功能,您仍然可以单击链接(但在列表项上)来锚定它。您可以使用不同的 CSS,例如设置 height:0 而不是 display:none,以及实际高度而不是 display:block,然后添加 transition:height 以对其进行动画处理。
    • 你能演示一下“transition:height”吗?
    • Demo here 但请记住必须定义高度 - 您不能将 height:auto 与过渡一起使用。
    • 目前看起来不错。我已经对代码进行了一些补充,使其更像我的结果,我注意到了一些问题。即下拉菜单将其他内容向下推而不是在其上移动。此外,当列表展开时,它会针对每个元素展开,而不仅仅是第一个子菜单。
    猜你喜欢
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多