Menüleiste links einklappbar?

2 Antworten

Kein JS geht, ist aber unschön. Du solltest auf JS zurückgreifen. Alternativ geht mit CSS target ein # in der URL zu setzen. http://bla.de/seite.html#sidebar-auf zum beispiel. Das ist aber echt hässlich. Da bleibt nur JavaScript. Bootstrap selber hat keine Sitebar, du müsstest selber eine entwickeln, kannst aber zum stylen auf Bootstrap zurückgreifen.

<style>
.sidebar {
  width: 300px;
  position: fixed;
  right: 0;
  top: 0;
  margin: 0;
  transition: all 2s;
}
</style>
<div class="sidebar">
  <!--Hier die sidebar Elemente-->
</div>
<script>
let sidebar = document.getElementsByClassName("sidebar")[0];
ButtonClickFunktion() { // Musst du selber implementieren, kannst du googlen, wenn du nicht weißt wie
  if (sidebar.style.right == 0) {
    sidebar.style.right = -300;
  }
  else {
    sidebar.style.right = 0;
  }
}
</script>

Das script ist natürlich nur so dahin geschrieben. Du musst es noch testen

Dieser Artikel zeigt verschiedene, einfache Sidebars mit Bootstrap: Bootstrap Sidebar.

Ansonsten gibt es auch eine zusätzliche Komponente für Bootstrap, mit der du eine Sidebar erstellen kannst: OffCanvas.

Eine Lösung ohne JavaScript hingegen könnte man mit einer versteckten Checkbox implementieren. Ein an sie gebundenes Label de-/aktiviert die Box. Das Label kann irgendwo im body platziert werden, die Checkbox hingegen muss immer vor dem Sidebar-Container liegen.

<label for="sidebar-toggle">Click me</label>
<input id="sidebar-toggle" type="checkbox">
<aside class="sidebar-container"><!-- ... --></aside>

Aufbauend auf dem Checkboxstatus können dann entsprechende CSS-Regeln erstellt werden.

#sidebar-toggle + .sidebar-container {
  bottom: 0;
  left: -100px;
  position: fixed;
  transition: left 1s;
  top: 0;
  width: 100px;
}
                
#sidebar-toggle:checked + .sidebar-container {
  left: 0;
}

Der Nachteil an diesem Lösungsweg ist, dass er nicht barrierefrei ist. Die Änderung der Box wird nur visuell kommuniziert.