# Bootstrap (Framework)

Bootstrap ist ein freies Frontend-CSS-Framework. Es enthält auf HTML und CSS basierende Gestaltungsvorlagen für Typografie, Formulare, Buttons, Tabellen, Grid-Systeme, Navigations- und andere Oberflächengestaltungselemente sowie zusätzliche, optionale JavaScript-Erweiterungen.

## Entstehung

Bootstrap ist ursprünglich aus dem Vorhaben entstanden, die internen Analyse- und Verwaltungswerkzeuge von Twitter weiterzuentwickeln. Zu diesem Zeitpunkt wurden in dem Unternehmen unterschiedlichste Bibliotheken für die Oberflächenentwicklung eingesetzt, was zu Inkonsistenz und hohem Wartungsaufwand führte. Um diesen Herausforderungen zu begegnen, wurde der Schwerpunkt des Projekts erweitert:
   “[…] a super small group of developers and I got together to design and build a new internal tool and saw an opportunity to do something more. Through that process, we saw ourselves build something much more substantial than another internal tool. Months later, we ended up with an early version of Bootstrap as a way to document and share common design patterns and assets within the company.”
   „[…] eine sehr kleine Gruppe von Entwicklern und ich haben uns zusammengesetzt, um ein neues internes Werkzeug zu gestalten und sahen dabei die Möglichkeit, mehr daraus zu machen. Während des Prozesses stellten wir fest, dass wir dabei waren, etwas zu erschaffen, was wesentlich weitreichender war als nur ein weiteres internes Werkzeug. Monate später hielten wir eine frühe Version von Bootstrap in den Händen, welche allgemeine Entwurfsmuster und Erkenntnisse innerhalb der Firma dokumentierte.“
Dabei spielt laut Aussage von Otto die Idee, Designer und Entwickler zusammenzubringen, eine elementare Rolle bei der Entwicklung: „From whiteboarding ideas to coding rough prototypes, collaborating across disciplines is what made Bootstrap successful for internal use at Twitter.“, („Vom Skizzieren von Ideen bis hin zur Programmierung grober Prototypen war es die interdisziplinäre Zusammenarbeit, die Bootstrap für die interne Nutzung bei Twitter so erfolgreich gemacht hat“).
Der Name Bootstrap entlehnt sich von der Geschichte des Hieronymus Carl Friedrich von Münchhausen, auch bekannt als „Baron Münchhausen“, der unter anderem die Lügengeschichte auftischte, dass er sich an den eigenen Haaren aus einem Sumpf zöge (strap), wobei statt eines Haars ein Stiefel (boot) eingesetzt wird, was es auch als englischsprachiges Sprichwort gibt. Da das Bootstrapframework die Basis ist, auf dem andere Teile der Webseite aufbauen, wird so der sachliche Zusammenhang hergestellt (vgl. Bootstrapping (Informatik)).
Den ersten Einsatz unter realen Bedingungen erfuhr Bootstrap auf Twitters erster Hackweek. Otto zeigte einigen Kollegen, wie sie die Entwicklung ihrer Projekte mit Hilfe des Toolkits beschleunigen können. Bei der Präsentation der Ergebnisse zeigte sich, dass Dutzende Teams auf das Framework zurückgegriffen hatten. Auf diese Weise trug Bootstrap nicht nur dazu bei, die Entwicklungszeit zu verkürzen, sondern auch ohne Hilfestellung eines dedizierten Designers ein einheitliches Look-and-Feel für die in der Hackweek entstandenen Anwendungen zu erzeugen.
Im August 2011 entschloss sich Twitter, die Ergebnisse der Öffentlichkeit als Open-Source-Projekt zur Verfügung zu stellen. Seitdem hat sich Bootstrap mit ≈78.900 Forks, ≈165.000 Likes und über ≈6.800 Beobachtern zu einem populären GitHub-Projekt entwickelt (Stand: September 2023).

## Eigenschaften

Bootstrap wurde mit Unterstützung für das damals noch relativ junge HTML5 und CSS 3 entwickelt. Da Bootstrap ab Version 3 weder Firefox 3.6 noch den Internet Explorer 7 unterstützt, wird in einem Übergangszeitraum weiterhin auch Version 2 aktualisiert. Der Gewährleistung der Browser-Kompatibilität dient das Konzept der progressiven Verbesserung. Das bedeutet, dass die grundlegenden Informationen der Webseite oder -anwendung für alle Geräte und Browser zugänglich sind, erweiterte Funktionalitäten jedoch nur den Geräten und Browsern zur Verfügung stehen, die diese unterstützen. Deutlich wird dies beispielsweise bei den in CSS 3 eingeführten Eigenschaften für abgerundete Ecken, Farbverläufe und Schatten. Diese werden von Bootstrap trotz der mangelnden Unterstützung durch ältere Webbrowser intensiv eingesetzt. Dabei gewährleistet der semantische Einsatz von HTML und die Implementierung von alternativen Stildefinitionen in den Stylesheets, dass die Informationen und Funktionen der Webseite trotz der fehlenden Funktionalitäten bei älteren Browsern zur Verfügung stehen. Gleiches gilt für die mitgelieferten JavaScript-Komponenten. Diese erweitern den Funktionsumfang des Toolkits, sind jedoch keine Voraussetzung für dessen Einsatz.
Ab Version 2.0 unterstützt Bootstrap zudem die Gestaltung im Sinne des Responsive Webdesigns. Das bedeutet, der grafische Aufbau von Webseiten erfolgt dynamisch und unter Berücksichtigung der Eigenschaften, die das verwendete Gerät (PC, Tablet, Mobiltelefon) mit sich bringt. So passen sich angeordnete Elemente automatisch der Bildschirmauflösung bzw. Fenstergröße an.
Bootstrap wird als Open-Source-Bibliothek angeboten und auf GitHub bereitgestellt. Entwickler sind aufgerufen, sich an dem Projekt zu beteiligen, und können auf der Plattform eigene Beiträge leisten.

## Aufbau und Funktionsweise

Bootstrap ist modular aufgebaut und besteht im Kern aus Sass-Stylesheets, welche die einzelnen Komponenten des Frameworks enthalten. Diese Einzelkomponenten werden von einer zentralen Bootstrap-Datei zusammengeführt. Durch diesen Aufbau kann der Entwickler durch Anpassung der Bootstrap-Datei selbst entscheiden, welche Komponenten in seinem Projekt verwendet werden.
Anpassungen sind in eingeschränktem Umfang über ein zentrales Konfigurationsstylesheet möglich. Darin werden unter anderem Angaben zu Schriftart und -größe, Farbe oder dem Aufbau des Grid-Layouts gesetzt. Tiefgreifendere Änderungen sind möglich, indem die Sass-Deklarationen von Bootstrap überschrieben werden.
Ab der Version 2.0 ist die Konfiguration von Bootstrap auch über eine spezielle „Customize“-Option in der Dokumentation möglich. Dabei wählt der Entwickler über ein Formular die gewünschten Komponenten und passt ggf. die Werte verschiedener Optionen seinen Bedürfnissen an. Das anschließend erzeugte Paket enthält bereits das fertig kompilierte CSS-Stylesheet.

### Grundgerüst: Grid-System und Responsive Webdesign

Bootstrap wird standardmäßig mit einem 940 Pixel breiten, zwölfspaltigen Grid-Layout ausgeliefert. Alternativ kann der Entwickler auch ein Layout mit variabler Breite verwenden. Für beide Fälle bietet das Toolkit vier Variationen im Sinne des Responsive Webdesigns an, welche verschiedene Auflösungen und Gerätetypen bedienen: Mobiltelefone, hoch- und querformatige Tablets, sowie PCs mit geringer und hoher (Widescreen-)Auflösung. Dabei passt sich die Breite der Spalten automatisch der zur Verfügung stehenden Fensterbreite an.
Über das Konfigurationsstylesheet hat der Entwickler die Möglichkeit, die Anzahl und Breite der Spalten, den Abstand zwischen den Spalten sowie die Gesamtbreite des Layouts seinen Vorstellungen entsprechend anzupassen.
Mit Release 4 ist das Grid-System an das CSS-Flexbox-System angepasst worden, um sich flexibler an die bestehende Fenstergröße anzupassen: Das Grundprinzip des zwölfspaltigen Rasters wurde in Bootstrap 4 beibehalten, und das responsive Raster auf fünf Viewport-Breiten verfeinert. Wurde das Raster in Bootstrap 3 im Wesentlichen noch mit der CSS-Eigenschaft float realisiert, die nie für komplexe Layouts vorgesehen war, erlaubt der CSS-Layout-Standard Flexbox die Definition und Anordnung flexibler Boxen in Bootstrap 4. Ab Version 4 werden die Browser Internet Explorer 9 und kleiner mangels Flexport-Implementierung nicht mehr unterstützt.

### Grundlegendes CSS-Stylesheet

Bootstrap enthält eine Reihe von Stylesheets, welche grundlegende Stildefinitionen für alle wichtigen HTML-Komponenten enthalten. Diese gewährleisten ein browser- und systemübergreifend einheitliches, modernes Erscheinungsbild für die Textformatierung, Tabellen und Formularelemente. Der Entwickler profitiert dabei von den Erfahrungen, die bei der Entwicklung und Gestaltung von Twitter gemacht wurden und kann auf praxiserprobte Gestaltungsentscheidungen und bewährte Entwurfsmuster der Frontendgestaltung zurückgreifen. Bootstrap 4 wurde um eine breite Palette an neuen Utility-Klassen erweitert, über die sich Rahmen, Abrundungen, Farben, Abmessungen usw. bestimmen lassen.

### Wiederverwendbare Komponenten

Ergänzend zu den regulären HTML-Elementen enthält Bootstrap weitere, häufig verwendete Oberflächenelemente. Hierzu gehören unter anderem Buttons mit erweiterter Funktionalität (bspw. Gruppierung von Buttons oder Buttons mit Dropdown-Möglichkeit), Navigationselemente (Navigationslisten und -leisten, horizontale und vertikale Reiter, Brotkrümelnavigation, Paginierung usw.), Labels, erweiterte typografische Möglichkeiten, Miniaturansichten, Formatierungen für Hinweismeldungen und Fortschrittsbalken.

### JavaScript-Plugins

Bis einschließlich Hauptversion 4 basieren die JavaScript-Komponenten von Bootstrap auf dem JavaScript-Framework jQuery. Die im Toolkit enthaltenen Plugins sind dementsprechend jQuery-Plugins. Sie bieten zusätzliche User-Interface-Elemente, wie beispielsweise Dialogfenster, Tooltips und Karussells. Außerdem erweitern sie die Funktionalität einiger vorhandener Oberflächenelemente, darunter zum Beispiel eine Autovervollständigungs-Funktion für Eingabefelder.
Mit der Veröffentlichung der Alpha-Version von Bootstrap 5 wurde die Abhängigkeit von jQuery abgeschafft.

### Cards-Komponente

Mit Bootstrap 4 wurde die Cards-Komponente eingeführt, die die Integration von Bildern, Texten, Listen, Buttons und Navigationsleisten in Karten ermöglicht, deren Kopf- und Fußbereich optisch absetzbar sind. Mit Flexbox lassen sich mehrere Karten in gleicher Höhe nebeneinander platzieren. Mit der CSS-Eigenschaft card-columns können die Karten auf ähnliche Weise wie Inhalte der Pinterest-App organisiert werden, jedoch von oben nach unten und von links nach rechts.

## Verwendung

Um Bootstrap in einer HTML-Seite zu verwenden, muss lediglich ein fertiges ZIP-Archiv von der Bootstrap-Webseite heruntergeladen werden. Dieses Archiv enthält bereits fast alle benötigten, in das eigene Projekt einzubindenden Dateien, wie eine Stylesheet-Datei mit allen Komponenten, eine JavaScript-Datei mit allen Plugins und auch eine benötigte Icon-Schriftart. Alternativ gibt es auf GitHub noch ein vollständiges, deutlich umfangreicheres ZIP-Archiv für Entwickler herunterzuladen, welches auch Beispiele für typische Webseiten zur bequemen Verwendung als Ausgangsdatei und vieles weitere enthält.
Die Dateien im ZIP-Archiv müssen in das eigene HTML-Dokument/Projekt eingebunden werden. Soll auch mit Javascript-Komponenten gearbeitet werden, so muss die Javascript-Datei zusammen mit der jQuery-Bibliothek ebenfalls im HTML-Dokument referenziert werden. Möchte man angepasste Einstellungen für Stil und Javascript-Funktionalität, besteht die Möglichkeit, fast alle Elemente von Bootstrap auf der Website selbst zu verändern und ein angepasstes Paket herunterzuladen. Schließlich kann man Bootstrap auch lokal, seinen Bedürfnissen entsprechend, vom Standard abweichend kompilieren.
Das folgende Beispiel verdeutlicht die Funktionsweise. Der HTML-Quellcode definiert eine einfache Template. Die Seite besteht aus regulären, semantisch verwendeten HTML5-Elementen sowie einigen zusätzlichen CSS-Klassenangaben entsprechend der Bootstrap-Dokumentation.