动画下拉菜单 Bootstrap 4

Posted

技术标签:

【中文标题】动画下拉菜单 Bootstrap 4【英文标题】:Animate Dropdown Menu 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>

【问题讨论】:

【参考方案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;
            

【讨论】:

以上是关于动画下拉菜单 Bootstrap 4的主要内容,如果未能解决你的问题,请参考以下文章

表中的 Bootstrap 4 下拉菜单

Bootstrap 4嵌套下拉菜单?

Bootstrap 4,在导航菜单项中使用多个下拉按钮

Bootstrap 4下拉菜单不起作用?

Bootstrap 4 在单击下拉菜单时更改插入符号

Bootstrap 4.1中悬停时的下拉菜单