Bootstrap 5 (mise à jour 2021)
Ajoutez du JavaScript pour empêcher la fermeture du sous-menu lorsque la liste déroulante parent est ouverte. Cela peut se faire par le biais d'un 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 - cliquer
Dropdown multi-niveaux Bootstrap 5 - survol
Ou bien, vous pouvez utiliser cette méthode CSS uniquement pour les menus déroulants de la barre de navigation...
.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 uniquement)
Bootstrap 4 (mise à jour 2018)
El dropdown-submenu
a été supprimé dans Bootstrap 3 RC. Selon l'auteur de Bootstrap, Mark Otto
"Les sous-menus n'ont pas vraiment leur place sur le web actuellement, en particulier sur le web mobile. Ils seront supprimés avec la version 3.0". https://github.com/twbs/bootstrap/pull/6342
Mais, avec un peu de CSS supplémentaire, vous pouvez obtenir la même fonctionnalité.
le sous-menu de la barre de navigation au survol :
.navbar-nav li:hover > ul.dropdown-menu {
display: block;
}
.dropdown-submenu {
position:relative;
}
.dropdown-submenu>.dropdown-menu {
top:0;
left:100%;
margin-top:-6px;
}
Survol du menu déroulant de la barre de navigation
survol du menu déroulant de la barre de navigation (aligné à droite)
Clic sur le menu déroulant de la barre de navigation (aligné à droite)
survol du menu déroulant de la barre de navigation (sans sous-menu)
Bootstrap 3
Voici un exemple qui utilise la version 3.0 RC 1 : http://bootply.com/71520
Voici un exemple qui utilise 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;
}
Exemple de balisage
<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. - Exemple dans la barre de navigation qui ajuste la position à gauche : http://bootply.com/92442
2 votes
N'oubliez pas que certains composants ont changé dans la version 3, notamment le menu, les navs et les modales.
11 votes
L'absence de support natif pour cette fonctionnalité (que j'estime utile) dans BS3 est l'une des principales raisons pour lesquelles je n'ai pas encore basculé. même si je reconnais que ce n'est pas aussi utile sur le mobile, et qu'ils ont une approche "mobile first" maintenant, il semble peu clairvoyant de supprimer une fonctionnalité qu'ils ont déjà implémentée, et qui est TRES utile sur le bureau
4 votes
Je suis d'accord pour dire qu'il est peu judicieux de supprimer une fonctionnalité attendue. Ce genre de changement brutal fait passer un mauvais quart d'heure aux développeurs d'entreprise.
0 votes
Pour créer une liste déroulante, il suffit d'utiliser le code CSS codepen.io/Gothburz/pen/GpJKqP