Bootstrap多级下拉幻灯片效果?

时间:2015-01-05 12:22:45

标签: javascript jquery twitter-bootstrap drop-down-menu twitter-bootstrap-3

我在我制作的Bootstrap项目中有一个多级下拉列表。我需要这样才能使下拉列表滑动。我怎么做到这一点?

我已完成以下代码,但我需要添加它。这是代码的作用:

  • 如果您点击其下拉切换,则会打开并关闭特定下拉列表。
  • 如果您在下拉列表外单击,但在其父级内部,则只会关闭子下拉列表;如果您在父级外部单击,则父级将关闭,依此类推。
  • 如果您点击子项下拉菜单的下拉切换,则只会影响该下拉列表及其子项 其父项。

我已阅读此答案,尝试将其与我当前的解决方案一起使用,但我不知道如何让它正常工作:https://stackoverflow.com/a/19339162/1934402

我确信它会有更多规格,但你明白了。这也是我制作的一个jsfiddle:http://jsfiddle.net/hhb9u7db/

例如,我将收藏链接设为 T恤的下拉列表作为另一个下拉列表。我想让一切都像我现在的工作一样,除了它滑动。

$(function() {
    $('.dropdown').on({
        "click": function(event) {
          if ($(event.target).closest('.dropdown-toggle').length && $(this).parents('.dropdown').length === ($(event.target).parents('.dropdown').length - 1)) {
            $(this).data('closable', true);
          } else {
              $(this).data('closable', false);
          }
        },
        "hide.bs.dropdown": function(event) {
          hide = $(this).data('closable');
          $(this).data('closable', true);
          return hide;
        }
    });
});

1 个答案:

答案 0 :(得分:1)

你的小提琴对我来说并不完全清楚。您的导航栏没有.navbar类,导航菜单没有.navbar-nav

您可以尝试添加如下所示的CSS代码:

.dropdown-menu,
.open > .dropdown-menu,
.dropdown-menu,
.open > .dropdown-menu .dropdown-menu {
  display: block;
  max-height: 0;
  overflow-y:hidden;
  visibility: hidden;
  -webkit-transition: max-height 2s ease-in-out, visibility 1.8s ease-in;
     -moz-transition: max-height 2s ease-in-out, visibility 1.8s ease-in;
       -o-transition: max-height 2s ease-in-out, visibility 1.8s ease-in;
          transition: max-height 2s ease-in-out, visibility 1.8s ease-in;
  max-width: 100%;
}
.navbar-nav > li.open > .dropdown-menu,
.nav-pills > li.open > .dropdown-menu,
.nav-pills > li.open > .dropdown-menu .open .dropdown-menu {
  max-height: 500px;
  display: block;
  visibility: visible;
  -webkit-transition: max-height 2s ease-in-out, visibility 0s linear 0.5s;
     -moz-transition: max-height 2s ease-in-out, visibility 0s linear 0.5s;
       -o-transition: max-height 2s ease-in-out, visibility 0s linear 0.5s;
          transition: max-height 2s ease-in-out, visibility 0s linear 0.5s;
  -webkit-transition-delay: 0s;
     -moz-transition-delay: 0s;
       -o-transition-delay: 0s;
          transition-delay: 0s;
}

演示:http://jsfiddle.net/hhb9u7db/1/

资源:

  1. Transitions on the display: property
  2. http://davidwalsh.name/css-slide
  3. 对于Bootstrap默认导航栏,您可以使用以下少量代码:

    .dropdown-menu, .open > .dropdown-menu, 
    {
                display:block;
                max-height: 0;
                overflow-y:hidden;
                visibility:hidden;
                transition:max-height 2s ease-in-out, visibility 1.8s ease-in;
                max-width: 100%;        
    } 
    .navbar-nav > li.open > .dropdown-menu, 
    {
    max-height: 500px;  
    display:block;
    visibility:visible;
    transition:max-height 2s ease-in-out, visibility 0s linear 0.5s;
    transition-delay:0s;
    }
    

    使用autoprefix plugin编译成以下CSS代码(lessc --autoprefix="Android 2.3,Android >= 4,Chrome >= 20,Firefox >= 24,Explorer >= 8,iOS >= 6,Opera >= 12,Safari >= 6"):

    .dropdown-menu,
    .open > .dropdown-menu {
      display: block;
      max-height: 0;
      overflow-y:hidden;
      visibility: hidden;
      -webkit-transition: max-height 2s ease-in-out, visibility 1.8s ease-in;
           -o-transition: max-height 2s ease-in-out, visibility 1.8s ease-in;
              transition: max-height 2s ease-in-out, visibility 1.8s ease-in;
      max-width: 100%;
    }
    .navbar-nav > li.open > .dropdown-menu {
      max-height: 500px;
      display: block;
      visibility: visible;
      -webkit-transition: max-height 2s ease-in-out, visibility 0s linear 0.5s;
           -o-transition: max-height 2s ease-in-out, visibility 0s linear 0.5s;
              transition: max-height 2s ease-in-out, visibility 0s linear 0.5s;
      -webkit-transition-delay: 0s;
           -o-transition-delay: 0s;
              transition-delay: 0s;
    }
    

    演示:http://www.bootply.com/dd5aFlGTTE