【问题标题】:Animate Dropdown Menu Bootstrap 4动画下拉菜单 Bootstrap 4
【发布时间】:2018-10-05 22:06:19
【问题描述】:

下拉菜单在 bootstrap (4.0) 中的原生方式不是动画的。如何让它像折叠时导航栏一样“滑动”打开?

值得注意的是,下拉菜单位于导航栏中。见下文代码; https://www.codeply.com/go/JKj5onR3ug

<nav class="navbar navbar-dark bg-dark">
  <a class="navbar-brand" href="#">Never expand</a>
  <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarsExample01" aria-controls="navbarsExample01" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="navbar-collapse collapse" id="navbarsExample01" style="">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Link</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
        <div class="dropdown-menu" aria-labelledby="dropdown01">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
    </ul>
  </div>
</nav>

【问题讨论】:

    标签: jquery css bootstrap-4 navbar dropdown


    【解决方案1】:

    您必须为下拉菜单覆盖 CSS。使用这个 css。

    .dropdown-menu {
        display: block;
    }
    
    .navbar-nav .dropdown-menu {
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.5s;
    }
    
    .navbar-nav .dropdown-menu.show {
        max-height: 500px;
    }
    

    【讨论】:

      【解决方案2】:

      最简单的方法是使用“折叠”而不是“下拉”来切换它。然后你只需要一点 CSS 来确保它在collapsing 动画处于活动状态时显示。另请注意,position-relative 设置在 dropdown-menu 上。

      .dropdown-menu.collapsing {
          display:block;
      }
      

      Try it on Codeply


      "借助 Popper.js 定位下拉菜单(除非 它们包含在导航栏中)。”

      因为dropdowns inside the Navbar are positioned differently 这是另一个使用标准按钮下拉菜单的示例:https://www.codeply.com/go/vJhVEh9Okd


      另一种方法是使用Bootstrap 3.x dropdown animation techniques 之一。

      【讨论】:

      • 效果很好,但为什么需要“位置相对”类?没有它似乎可以工作?
      • 感谢@Zim 的示例和想法,它可以工作,但我发现我可以在那里修复一些问题: - 扩展的导航栏上的下拉菜单无法正常工作。 - 动画有点破,因为下拉有垂直填充。这是固定示例:codeply.com/go/09IISWbMoa
      【解决方案3】:

      以下是我使用 transform: scale 使用纯 css 制作下拉动画的方法:

      SCSS 样式

      .dropdown {
          .dropdown-menu {
              transition: all 0.5s;
              overflow: hidden;
              transform-origin: top center;
              transform: scale(1,0);
              display: block;
          }
          &:hover {
              .dropdown-menu {
                  transform: scale(1);
              }
          }
      }
      

      Codepen查看演示

      【讨论】:

        【解决方案4】:

        试试这段代码:)

                    .dropdown-menu {
                        float: none;
                        position: static;
                        padding: 0;
                        display: block;
                        &.show{
                            max-height: 500px;
        
                        }
                    }
        
                    .dropdown-menu {
                        max-height: 0;
                        overflow: hidden;
                        transition: max-height 0.5s;
                    }
        

        【讨论】:

          猜你喜欢
          • 2019-10-14
          • 2017-09-28
          • 1970-01-01
          • 2019-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-18
          • 1970-01-01
          相关资源
          最近更新 更多