Wie ändert man den Breakpoint für das Einklappen der Bootstrap-Navbar?

-

Problem: Anpassung des Bootstrap-Navbar-Breakpoints

Der Bootstrap-Navbar-Collapse-Breakpoint bestimmt, wann das Navbar-Menü von einem horizontalen Layout zu einem vertikalen Layout für mobile Geräte wechselt. Der Standard-Breakpoint passt möglicherweise nicht zu Ihrem Website-Design oder Ihren Inhaltsanforderungen, sodass Sie ihn eventuell anpassen müssen.

Ändern des Navbar-Collapse-Breakpoints

Bootstrap 5-Methode

Bootstrap 5 ermöglicht es Ihnen, den Navbar-Collapse-Breakpoint mit der Klasse navbar-expand zu steuern. So funktioniert es:

  • Fügen Sie navbar-expand zu Ihrer Navbar hinzu, um ein Layout zu erhalten, das nie zusammenklappt.
  • Entfernen Sie die Klasse navbar-expand für eine Navbar, die immer im zusammengeklappten Modus bleibt.

Für mehr Kontrolle bietet Bootstrap 5 diese Optionen:

  • navbar-expand-sm: Erweitert sich auf Bildschirmen breiter als 576px
  • navbar-expand-md: Erweitert sich auf Bildschirmen breiter als 768px
  • navbar-expand-lg: Erweitert sich auf Bildschirmen breiter als 992px
  • navbar-expand-xl: Erweitert sich auf Bildschirmen breiter als 1200px
  • navbar-expand-xxl: Erweitert sich auf Bildschirmen breiter als 1400px

Beispiel: Verwendung von navbar-expand-lg

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Marke</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Navigation umschalten">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Startseite</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Funktionen</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Preise</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

Bootstrap 4-Ansatz

Bootstrap 4 verwendet ein ähnliches System mit navbar-expand-* Klassen, aber mit anderen Breakpoints:

  • navbar-expand-sm: Mobiles Menü auf Bildschirmen kleiner als 576px
  • navbar-expand-md: Mobiles Menü auf Bildschirmen kleiner als 768px
  • navbar-expand-lg: Mobiles Menü auf Bildschirmen kleiner als 992px
  • navbar-expand-xl: Mobiles Menü auf Bildschirmen kleiner als 1200px

Für eine Navbar, die nie das mobile Menü verwendet, nutzen Sie navbar-expand. Wenn Sie das mobile Menü für alle Breiten wünschen, verwenden Sie keine navbar-expand-* Klasse.

Sie können in Bootstrap 4 auch benutzerdefinierte Breakpoints festlegen. Um beispielsweise einen Breakpoint bei 1300px zu setzen, erstellen Sie eine neue Klasse wie navbar-expand-custom und definieren Sie ihr Verhalten mit CSS-Medienabfragen.

Tipp: Benutzerdefinierter Breakpoint in Bootstrap 4

Um einen benutzerdefinierten Breakpoint bei 1300px zu erstellen, fügen Sie dieses CSS hinzu:

@media (min-width: 1300px) {
  .navbar-expand-custom {
    flex-flow: row nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-custom .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-custom .navbar-nav .nav-link {
    padding-right: .5rem;
    padding-left: .5rem;
  }
  .navbar-expand-custom .navbar-collapse {
    display: flex!important;
    flex-basis: auto;
  }
  .navbar-expand-custom .navbar-toggler {
    display: none;
  }
}

Verwenden Sie dann die Klasse navbar-expand-custom für Ihre Navbar.

Implementierung benutzerdefinierter Breakpoints

CSS-Medienabfragen

CSS-Medienabfragen ermöglichen es Ihnen, benutzerdefinierte Breakpoints für Ihre Navigationsleiste zu erstellen und geben Ihnen die Kontrolle darüber, wann sie zusammenklappt. Diese Methode funktioniert für Bootstrap 4 und 5 und kann mit jedem CSS-Präprozessor, einschließlich Stylus, verwendet werden.

So implementieren Sie einen benutzerdefinierten Breakpoint mit CSS-Medienabfragen:

  1. Wählen Sie Ihre Breakpoint-Breite (z.B. 1000px).
  2. Schreiben Sie eine Medienabfrage für Bildschirme unter dieser Breite.
  3. Fügen Sie CSS-Regeln hinzu, um das Layout und Verhalten der Navigationsleiste zu ändern.

Hier ein Beispiel, wie man einen benutzerdefinierten Breakpoint bei 1000px setzt:

@media (max-width: 1000px) {
  .navbar-toggler {
    display: block;
  }
  .navbar-collapse {
    display: none;
  }
  .navbar-collapse.show {
    display: block;
  }
  .navbar-nav {
    flex-direction: column;
  }
}

Dieses CSS bewirkt Folgendes:

  • Zeigt den Navbar-Toggler (Hamburger-Menü) unter 1000px an
  • Versteckt den Navbar-Inhalt standardmäßig
  • Zeigt den Navbar-Inhalt an, wenn die Klasse 'show' hinzugefügt wird (typischerweise durch JavaScript, wenn der Toggler angeklickt wird)
  • Stapelt die Navigationselemente vertikal

Um die Navbar-Stile für verschiedene Bildschirmgrößen anzupassen, können Sie weitere Regeln innerhalb Ihrer Medienabfrage hinzufügen:

@media (max-width: 1000px) {
  /* Vorherige Regeln */

  .navbar-nav .nav-item {
    margin-bottom: 10px;
  }
  .navbar-brand {
    margin-right: auto;
  }
  .navbar .container {
    flex-wrap: wrap;
  }
}

Diese zusätzlichen Regeln:

  • Fügen Abstand zwischen Navigationselementen hinzu, wenn sie gestapelt sind
  • Verschieben die Marke auf die linke Seite
  • Erlauben dem Navbar-Container, seinen Inhalt zu umbrechen

Tipp: Feinabstimmung der Breakpoints

Beginnen Sie mit einem größeren Breakpoint und verringern Sie ihn schrittweise, während Sie auf verschiedenen Geräten testen. Dies hilft Ihnen, den optimalen Punkt zu finden, an dem Ihr Navbar-Layout sowohl auf Desktop- als auch auf Mobilgeräten gut aussieht. Verwenden Sie die Entwicklertools des Browsers, um verschiedene Bildschirmgrößen zu simulieren und passen Sie Ihre Medienabfrage entsprechend an.

Alternative Methoden

JavaScript-Ansatz

JavaScript bietet eine weitere Möglichkeit, das Verhalten des Navbar-Zusammenklappens zu steuern und gibt Ihnen mehr Kontrolle über die Reaktionsfähigkeit Ihrer Navbar.

So verwenden Sie JavaScript für das Navbar-Zusammenklappen:

  1. Entfernen Sie Bootstraps Standard-Collapse-Klassen aus Ihrer Navbar.
  2. Fügen Sie Ihrer Navbar eine benutzerdefinierte Klasse für das JavaScript-Targeting hinzu.
  3. Schreiben Sie eine JavaScript-Funktion, um das Zusammenklappen zu steuern.

Hier ist ein Beispiel für die Implementierung:

function handleNavbarCollapse() {
  const navbar = document.querySelector('.custom-navbar');
  const toggleButton = navbar.querySelector('.navbar-toggler');
  const navbarContent = navbar.querySelector('.navbar-collapse');

  function toggleNavbar() {
    navbarContent.classList.toggle('show');
  }

  function checkWidth() {
    if (window.innerWidth <= 1000) {
      navbar.classList.add('navbar-collapsed');
      navbarContent.classList.remove('show');
    } else {
      navbar.classList.remove('navbar-collapsed');
      navbarContent.classList.add('show');
    }
  }

  toggleButton.addEventListener('click', toggleNavbar);
  window.addEventListener('resize', checkWidth);
  checkWidth(); // Erste Überprüfung
}

handleNavbarCollapse();

Dieser JavaScript-Code:

  • Zielt auf eine Navbar mit der Klasse 'custom-navbar' ab
  • Schaltet eine 'show'-Klasse für den Navbar-Inhalt um, wenn der Umschaltknopf geklickt wird
  • Überprüft die Fensterbreite und fügt/entfernt Klassen entsprechend
  • Verwendet einen Event-Listener, um auf Fenstergrößenänderungen zu reagieren

Tipp für sanfte Übergänge

Fügen Sie CSS-Übergänge zu Ihren Navbar-Elementen hinzu, um einen sanfteren Zusammenklapp-/Ausklapp-Effekt zu erzielen:

.navbar-collapse {
  transition: max-height 0.3s ease-out;
  max-height: 0;
  overflow: hidden;
}

.navbar-collapse.show {
  max-height: 500px; /* Anpassen basierend auf dem Inhalt Ihrer Navbar */
}

SASS/SCSS Variablen

Wenn Sie SASS oder SCSS in Ihrem Projekt verwenden, können Sie Bootstraps Quellvariablen ändern, um den Navbar-Breakpoint zu modifizieren. Obwohl diese Methode nicht direkt auf Stylus anwendbar ist, ist es nützlich, sie für Projekte zu kennen, die SASS/SCSS verwenden.

So ändern Sie den Navbar-Breakpoint mit SASS:

  1. Erstellen Sie eine benutzerdefinierte SASS-Datei (z.B. _custom-variables.scss).
  2. Überschreiben Sie Bootstraps Standard-Breakpoint-Variablen.
  3. Importieren Sie Ihre benutzerdefinierte Variablen-Datei vor Bootstraps SASS-Dateien.

Hier ist ein Beispiel für die Festlegung eines benutzerdefinierten Breakpoints:

// _custom-variables.scss
$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px,
  custom: 1000px  // Fügen Sie Ihren benutzerdefinierten Breakpoint hinzu
);

$navbar-expand-breakpoint: custom;

// Haupt-SASS-Datei
@import "custom-variables";
@import "bootstrap/scss/bootstrap";

Diese Methode:

  • Fügt dem Grid-System von Bootstrap einen benutzerdefinierten Breakpoint hinzu
  • Legt fest, dass sich die Navbar beim benutzerdefinierten Breakpoint ausdehnt
  • Erfordert eine Neukompilierung der SASS-Dateien von Bootstrap mit Ihren benutzerdefinierten Variablen

Während dieser Ansatz eine tiefe Integration mit Bootstrap bietet, erfordert er mehr Einrichtung und eignet sich möglicherweise nicht für alle Projekte, insbesondere solche, die kein SASS/SCSS verwenden.