【问题标题】:How to change the animation of the dropdown menu in bootstrap?如何更改引导程序中下拉菜单的动画?
【发布时间】:2016-01-02 13:24:31
【问题描述】:

我在我的网站皮肤中使用 bootstrap 和 animate.css。这可能是我用 animate.css 改变 bootstrap 菜单中出现子菜单的效果吗?

<div id="navbar" class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
              <li class="active"><a href="#">Home</a></li>
              <li><a href="#">About</a></li>
              <li><a href="#">Contact</a></li>
              <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                <ul class="dropdown-menu">
                  <li><a href="#">Action</a></li>
                  <li><a href="#">Another action</a></li>
                  <li><a href="#">Something else here</a></li>
                  <li role="separator" class="divider"></li>
                  <li class="dropdown-header">Nav header</li>
                  <li><a href="#">Separated link</a></li>
                  <li><a href="#">One more separated link</a></li>
                </ul>
              </li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
              <li class="active"><a href="./">Default <span class="sr-only">(current)</span></a></li>
              <li><a href="../navbar-static-top/">Static top</a></li>
              <li><a href="../navbar-fixed-top/">Fixed top</a></li>
            </ul>
          </div>

【问题讨论】:

  • 我猜你的意思是改变下拉菜单的动画?
  • 你的问题的答案很简单,138200。是的,有可能
  • 这取决于预期的结果。如果你不告诉我们,你认为我们知道你想要什么吗?您可以阅读有关 TB 事件的信息here
  • 你想要什么样的动画?您想要菜单下拉后的动画还是想要下拉动画等?
  • Evochrome :例如,向下滑动动画,我想要下拉动画

标签: jquery html css twitter-bootstrap animate.css


【解决方案1】:

好吧,我认为这将满足您的需求:

DEMO

代码(JS):

$('.dropdown-menu').addClass('invisible'); //FIRST TIME INVISIBLE

// ADD SLIDEDOWN ANIMATION TO DROPDOWN-MENU 
  $('.dropdown').on('show.bs.dropdown', function(e){
    $('.dropdown-menu').removeClass('invisible');
    $(this).find('.dropdown-menu').first().stop(true, true).slideDown();
  });

  // ADD SLIDEUP ANIMATION TO DROPDOWN-MENU 
  $('.dropdown').on('hide.bs.dropdown', function(e){
    $(this).find('.dropdown-menu').first().stop(true, true).slideUp();
  });

除了添加上面的 javascript,您还可以尝试添加以下 CSS 代码:

DEMO_2

代码(CSS):

.dropdown .dropdown-menu {
    height: 0px;
    display: block;
    overflow: hidden;
    opacity:0;
-webkit-transition: height 1s ease;
-moz-transition: height 1s ease;
-ms-transition: height 1s ease;
-o-transition: height 1s ease;
transition: height 1s ease;

}


.dropdown.open .dropdown-menu {
    height:200px;
    opacity: 1;

}

干杯,

编辑:我发现使用all 代替height 甚至更平滑,因为它还可以为不透明度设置动画。

【讨论】:

  • 非常感谢。这是一个强有力的答案:-)
【解决方案2】:

无需使用幻灯片或其他解决方法这是一个简单的解决方案:

  1. animate.css 添加到您的项目中(谷歌一下大家都知道)
  2. animated 类添加到您的下拉菜单中
  3. 使用下面这段Js:(show()很重要)

    $('.dropdown').on('show.bs.dropdown', function(e){
        $(this).find('.dropdown-menu').removeClass('lightSpeedOut').addClass('lightSpeedIn').show();
    });
    
    $('.dropdown').on('hide.bs.dropdown', function(e){
        $(this).find('.dropdown-menu').removeClass('lightSpeedIn').addClass('lightSpeedOut');
    });
    

    使用 Bootstrap 4.3.1 测试(当前最新)应该也适用于 Bootstrap 3.x

【讨论】:

  • 也适用于 BS 5。非常感谢!
  • animate css 的类与以前的版本有所不同,因此请确保每个人都查看animate.style的正确文档
猜你喜欢
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 2021-05-21
  • 2023-03-27
相关资源
最近更新 更多