Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bootstrap dropdown sub menu missing

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 don't say anything about it

It was there in 2.x with class name as dropdown-submenu

like image 590
DevC Avatar asked Aug 02 '13 18:08

DevC


1 Answers

Bootstrap 5 (update 2021)

Add some JavaScript to prevent the submenu from closing when the parent dropdown is open. This can be done be toggle display:block...

let dropdowns = document.querySelectorAll('.dropdown-toggle') dropdowns.forEach((dd)=>{     dd.addEventListener('click', function (e) {         var el = this.nextElementSibling         el.style.display = el.style.display==='block'?'none':'block'     }) }) 

Bootstrap 5 Multi-level Dropdown - click
Bootstrap 5 Multi-level Dropdown - hover

Or, you can use this CSS only method for Navbar dropdowns...

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

Bootstrap 5 Navbar Dropdown Hover Submenus (CSS only)


Bootstrap 4 (update 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.

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

like image 108
Zim Avatar answered Oct 04 '22 20:10

Zim