Bootstrap dropdown sub menu missing

后端 未结 7 1105
再見小時候
再見小時候 2020-11-22 04:09

Bootstrap 3 is still at RC, but I was just trying to implement it. I couldn\'t figure out how to put a sub menu class. Even there is no class in css and even the new docs do

相关标签:
7条回答
  • 2020-11-22 04:28

    I make another solution for dropdown. Hope this is helpfull Just add this js script

    <script type="text/javascript"> jQuery("document").ready(function() {
      jQuery("ul.dropdown-menu > .dropdown.parent").click(function(e) {
        e.preventDefault();
        e.stopPropagation();
        if (jQuery(this).hasClass('open2'))
          jQuery(this).removeClass('open2');
        else {
          jQuery(this).addClass('open2');
        }
    
      });
    }); < /script>
    
    <style type="text/css">.open2{display:block; position:relative;}</style>
    
    0 讨论(0)
  • 2020-11-22 04:39

    @skelly solution is good but will not work on mobile devices as the hover state won't work.

    I have added a little bit of JS to get the BS 2.3.2 behavior back.

    PS: it will work with the CSS you get there: http://bootply.com/71520 though you can comment the following part:

    CSS:

    /*.dropdown-submenu:hover>.dropdown-menu{display:block;}*/
    

    JS:

    $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
      // Avoid following the href location when clicking
      event.preventDefault();
      // Avoid having the menu to close when clicking
      event.stopPropagation();
      // If a menu is already open we close it
      $('ul.dropdown-menu [data-toggle=dropdown]').parent().removeClass('open');
      // opening the one you clicked on
      $(this).parent().addClass('open');
    });
    

    The result can be found on my WordPress theme (Top of the page): http://shprinkone.julienrenaux.fr/

    0 讨论(0)
  • 2020-11-22 04:42

    Updated 2018

    The dropdown-submenu has been removed in Bootstrap 3 RC. In the words of Bootstrap author Mark Otto..

    "Submenus just don't have much of a place on the web right now, especially the mobile web. They will be removed with 3.0" - https://github.com/twbs/bootstrap/pull/6342

    But, with a little extra CSS you can get the same functionality.

    Bootstrap 4 (navbar submenu on hover)

    .navbar-nav li:hover > ul.dropdown-menu {
        display: block;
    }
    .dropdown-submenu {
        position:relative;
    }
    .dropdown-submenu>.dropdown-menu {
        top:0;
        left:100%;
        margin-top:-6px;
    }
    

    Navbar submenu dropdown hover
    Navbar submenu dropdown hover (right aligned)
    Navbar submenu dropdown click (right aligned)
    Navbar dropdown hover (no submenu)


    Bootstrap 3

    Here is an example that uses 3.0 RC 1: http://bootply.com/71520

    Here is an example that uses Bootstrap 3.0.0 (final): http://bootply.com/86684

    CSS

    .dropdown-submenu {
        position:relative;
    }
    .dropdown-submenu>.dropdown-menu {
        top:0;
        left:100%;
        margin-top:-6px;
        margin-left:-1px;
        -webkit-border-radius:0 6px 6px 6px;
        -moz-border-radius:0 6px 6px 6px;
        border-radius:0 6px 6px 6px;
    }
    .dropdown-submenu:hover>.dropdown-menu {
        display:block;
    }
    .dropdown-submenu>a:after {
        display:block;
        content:" ";
        float:right;
        width:0;
        height:0;
        border-color:transparent;
        border-style:solid;
        border-width:5px 0 5px 5px;
        border-left-color:#cccccc;
        margin-top:5px;
        margin-right:-10px;
    }
    .dropdown-submenu:hover>a:after {
        border-left-color:#ffffff;
    }
    .dropdown-submenu.pull-left {
        float:none;
    }
    .dropdown-submenu.pull-left>.dropdown-menu {
        left:-100%;
        margin-left:10px;
        -webkit-border-radius:6px 0 6px 6px;
        -moz-border-radius:6px 0 6px 6px;
        border-radius:6px 0 6px 6px;
    }
    

    Sample Markup

    <div class="navbar navbar-default navbar-fixed-top" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">  
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
            </div>
            <div class="collapse navbar-collapse navbar-ex1-collapse">
                <ul class="nav navbar-nav">
                    <li class="menu-item dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Drop Down<b class="caret"></b></a>
                        <ul class="dropdown-menu">
                            <li class="menu-item dropdown dropdown-submenu">
                                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Level 1</a>
                                <ul class="dropdown-menu">
                                    <li class="menu-item ">
                                        <a href="#">Link 1</a>
                                    </li>
                                    <li class="menu-item dropdown dropdown-submenu">
                                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Level 2</a>
                                        <ul class="dropdown-menu">
                                            <li>
                                                <a href="#">Link 3</a>
                                            </li>
                                        </ul>
                                    </li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    

    P.S. - Example in navbar that adjusts left position: http://bootply.com/92442

    0 讨论(0)
  • 2020-11-22 04:46

    Shprink's code helped me the most, but to avoid the dropdown to go off-screen i updated it to:

    JS:

    $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
        // Avoid following the href location when clicking
        event.preventDefault(); 
        // Avoid having the menu to close when clicking
        event.stopPropagation(); 
        // If a menu is already open we close it
        $('ul.dropdown-menu [data-toggle=dropdown]').parent().removeClass('open');
        // opening the one you clicked on
        $(this).parent().addClass('open');
    
        var menu = $(this).parent().find("ul");
        var menupos = $(menu).offset();
    
        if (menupos.left + menu.width() > $(window).width()) {
            var newpos = -$(menu).width();
            menu.css({ left: newpos });    
        } else {
            var newpos = $(this).parent().width();
            menu.css({ left: newpos });
        }
    
    });
    

    CSS: FROM background-color: #eeeeee TO background-color: #c5c5c5 - white font & light background wasn't looking good.

    .nav .open > a,
    .nav .open > a:hover,
    .nav .open > a:focus {
      background-color: #c5c5c5;
      border-color: #428bca;
    }
    

    I hope this helps people as much as it did for me!

    But i hope Bootstrap add the subs feature back ASAP.

    0 讨论(0)
  • 2020-11-22 04:52

    Until today (9 jan 2014) the Bootstrap 3 still not support sub menu dropdown.

    I searched Google about responsive navigation menu and found this is the best i though.

    It is Smart menus http://www.smartmenus.org/

    I hope this is the way out for anyone who want navigation menu with multilevel sub menu.

    update 2015-02-17 Smart menus are now fully support Bootstrap element style for submenu. For more information please look at Smart menus website.

    0 讨论(0)
  • 2020-11-22 04:53

    Comment to Skelly's really helpful workaround: in Bootstrap-sass 3.3.6, utilities.scss, line 19: .pull-left has float:left !important. Since that, I recommend to use !important in his CSS as well:

    .dropdown-submenu.pull-left {
        float:none !important;
    }
    
    0 讨论(0)
提交回复
热议问题