So fügen Sie Bootstrap Untermenüs hinzu
Problem: Dropdown-Untermenüs zu Bootstrap hinzufügen
Bootstrap bietet Navigationskomponenten, einschließlich Dropdown-Menüs. Allerdings ist das Erstellen von verschachtelten Dropdown-Untermenüs innerhalb dieser Menüs keine integrierte Funktion. Diese Einschränkung kann es schwierig machen, komplexe Navigationsstrukturen in Bootstrap-basierten Websites zu organisieren.
Implementierung von Dropdown-Untermenüs
CSS-basierte Lösung für Bootstrap 5
Um Dropdown-Untermenüs in Bootstrap 5 hinzuzufügen, können Sie benutzerdefiniertes CSS verwenden. Diese Methode konzentriert sich auf die Positionierung der Untermenüs und das Hinzufügen von Hover-Effekten für Menüelemente.
Hier ist ein CSS-Beispiel für die Positionierung von Untermenüs:
.dropdown-submenu {
position: relative;
}
.dropdown-submenu .dropdown-menu {
top: 0;
left: 100%;
margin-top: -1px;
}
Dieses CSS positioniert das Untermenü rechts neben seinem übergeordneten Menüelement. Um Hover-Effekte hinzuzufügen, fügen Sie Folgendes hinzu:
.navbar-nav li:hover > ul.dropdown-menu {
display: block;
}
Dieses CSS zeigt das Untermenü an, wenn der Mauszeiger über dem übergeordneten Menüelement schwebt.
Tipp: Überlauf von Untermenüs verhindern
Um zu verhindern, dass Untermenüs auf kleineren Bildschirmen über den sichtbaren Bereich hinausragen, fügen Sie dieses CSS hinzu:
@media (max-width: 768px) {
.dropdown-submenu .dropdown-menu {
left: 0;
top: 100%;
}
}
Dies positioniert das Untermenü auf kleineren Bildschirmen unter seinem übergeordneten Element.
JavaScript-erweiterte Herangehensweise
Für mehr Kontrolle über das Verhalten von Untermenüs können Sie JavaScript verwenden. Diese Methode hilft, das Schließen von Untermenüs zu verhindern und fügt eine Funktion zum Ein- und Ausblenden hinzu.
Hier ist ein JavaScript-Beispiel:
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'
})
})
Dieses Skript verhindert, dass sich das Untermenü schließt, wenn das übergeordnete Dropdown geöffnet ist. Es schaltet die Anzeige des Untermenüs zwischen 'block' und 'none' um, wenn es angeklickt wird.
Alternative Methoden
Anpassung an verschiedene Bootstrap-Versionen
Bootstrap 4 Untermenü-Implementierung
Bootstrap 4 benötigt CSS-Änderungen, um Dropdown-Untermenüs hinzuzufügen. Hier ist ein CSS-Beispiel für Bootstrap 4:
.navbar-nav li:hover > ul.dropdown-menu {
display: block;
}
.dropdown-submenu {
position: relative;
}
.dropdown-submenu > .dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
}
Dieses CSS platziert das Untermenü rechts neben seinem Elternelement und zeigt es beim Hover an.
Für klickbasierte Untermenü-Optionen können Sie diese JavaScript-Funktion verwenden:
$('.dropdown-menu a.dropdown-toggle').on('click', function(e) {
if (!$(this).next().hasClass('show')) {
$(this).parents('.dropdown-menu').first().find('.show').removeClass('show');
}
var $subMenu = $(this).next('.dropdown-menu');
$subMenu.toggleClass('show');
return false;
});
Dieses Skript schaltet die 'show'-Klasse für das Untermenü beim Klicken um und ermöglicht so eine klickbasierte Navigation.
Tipp: Verbesserung der Barrierefreiheit
Um die Barrierefreiheit zu verbessern, fügen Sie ARIA-Attribute zu Ihren Dropdown-Menüelementen hinzu. Zum Beispiel:
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<!-- Dropdown-Elemente hier -->
</div>
</li>
Dies hilft Screenreadern, die Struktur und das Verhalten Ihrer Dropdown-Menüs zu verstehen.
Bootstrap 3 Legacy-Unterstützung
Für Bootstrap 3 benötigen Sie benutzerdefiniertes CSS, um Dropdown-Untermenüs zu erstellen. Hier ist ein Beispiel:
.dropdown-submenu {
position: relative;
}
.dropdown-submenu > .dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
border-radius: 0 6px 6px 6px;
}
.dropdown-submenu:hover > .dropdown-menu {
display: block;
}
Dieses CSS positioniert das Untermenü und zeigt es beim Hover an.
Die HTML-Struktur für verschachtelte Dropdowns in Bootstrap 3 sieht wie folgt aus:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="dropdown-submenu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Untermenü</a>
<ul class="dropdown-menu">
<li><a href="#">Untermenü-Element 1</a></li>
<li><a href="#">Untermenü-Element 2</a></li>
</ul>
</li>
</ul>
</li>
Diese Struktur erstellt ein Dropdown mit einem verschachtelten Untermenü und ermöglicht so eine mehrstufige Navigation in Bootstrap 3.