Falta el submenú desplegable Bootstrap
Bootstrap 3 todavía está en RC, pero solo estaba intentando implementarlo. No pude entender cómo poner una clase de submenú. Incluso no hay clases de CSS e incluso los nuevos documentos no dicen nada al respecto.
Estaba allí en 2.x con el nombre de la clase como submenú desplegable
Bootstrap 5 (actualización 2023)
Agregue algo de JavaScript para evitar que el submenú se cierre cuando el menú desplegable principal esté abierto. Esto se puede hacer alternando 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'
})
})
Menú desplegable de varios niveles de Bootstrap 5: haga clic en Menú
desplegable de varios niveles de Bootstrap 5: pase el cursor
Menú desplegable de varios niveles de Bootstrap 5: pase el cursor y anime la transición
O puede utilizar este método exclusivo de CSS para los menús desplegables de la barra de navegación...
.dropdown-submenu {
position: relative;
}
.dropdown-submenu .dropdown-menu {
top: 0;
left: 100%;
margin-top: -1px;
}
.navbar-nav li:hover > ul.dropdown-menu {
display: block;
}
Submenús desplegables de desplazamiento de la barra de navegación de Bootstrap 5 (solo CSS)
Bootstrap 4 (actualización 2018)
Se dropdown-submenu
ha eliminado en Bootstrap 3 RC. En palabras del autor de Bootstrap, Mark Otto.
"Los submenús simplemente no tienen mucho lugar en la web en este momento, especialmente en la web móvil. Se eliminarán con 3.0" - https://github.com/twbs/bootstrap/pull/6342
Pero con un poco más de CSS puedes obtener la misma funcionalidad.
submenú de la barra de navegación al pasar el mouse:
.navbar-nav li:hover > ul.dropdown-menu {
display: block;
}
.dropdown-submenu {
position:relative;
}
.dropdown-submenu>.dropdown-menu {
top:0;
left:100%;
margin-top:-6px;
}
Colocar el cursor sobre el menú desplegable de la barra de navegación Colocar el cursor
sobre el menú desplegable de la barra de navegación (alineado a la derecha)
Clic en el menú desplegable de la barra de navegación (alineado a la derecha)
Colocar el cursor sobre el menú desplegable de la barra de navegación (sin submenú)
Arranque 3
Aquí hay un ejemplo que usa Bootstrap 3: https://codeply.com/p/T9FWGhhL0S
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;
}
Marcado de muestra
<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>
PD: ejemplo en la barra de navegación que ajusta la posición izquierda: https://codeply.com/p/XEiERVGcmz
La solución @skelly es buena pero no funcionará en dispositivos móviles ya que el estado de desplazamiento no funcionará.
Agregué un poco de JS para recuperar el comportamiento de BS 2.3.2.
PD: funcionará con el CSS que obtienes allí: http://bootply.com/71520 aunque puedes comentar la siguiente parte:
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');
});
El resultado se puede encontrar en mi tema de WordPress (parte superior de la página): http://shprinkone.julienrenaux.fr/