Bootstrap-Buttons basieren auf einem zweiteiligen Klassensystem: einer Basis-Klasse für grundlegende Funktionalität und Stil-Klassen für spezifische Darstellungen. Diese Trennung ermöglicht konsistentes Verhalten bei flexibler visueller Gestaltung.
Jeder Bootstrap-Button benötigt die btn-Klasse als
Fundament. Diese Klasse definiert:
<!-- Basis-Button ohne spezifischen Stil -->
<button class="btn">Basis-Button</button>
<!-- Vollständiger Button mit Stilklasse -->
<button class="btn btn-primary">Primärer Button</button>Die btn-Klasse stellt folgende Eigenschaften bereit:
/* Vereinfachte Darstellung der wichtigsten btn-Eigenschaften */
.btn {
display: inline-block;
padding: 0.375rem 0.75rem; /* Optimaler Klickbereich */
margin-bottom: 0;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
text-align: center;
text-decoration: none;
vertical-align: middle;
cursor: pointer;
border: 1px solid transparent;
border-radius: 0.375rem;
transition: all 0.15s ease-in-out; /* Sanfte Zustandsübergänge */
}Das Padding von 0.375rem × 0.75rem entspricht den Accessibility-Richtlinien für Touch-Targets und sorgt für bequeme Bedienbarkeit auf allen Geräten.
Primary-Buttons kennzeichnen die wichtigste Aktion in einem Bereich. Pro Sektion sollte nur ein Primary-Button verwendet werden, um klare Hierarchien zu schaffen.
<!-- Primary für Hauptaktionen -->
<button class="btn btn-primary">Jetzt kaufen</button>
<button class="btn btn-primary">Anmelden</button>
<button class="btn btn-primary">Speichern</button>Secondary-Buttons eignen sich für alternative oder unterstützende Aktionen:
<!-- Secondary für alternative Optionen -->
<button class="btn btn-secondary">Abbrechen</button>
<button class="btn btn-secondary">Weitere Informationen</button>
<button class="btn btn-secondary">Als Entwurf speichern</button>Bootstrap bietet vier kontextuelle Stile, die spezifische Bedeutungen transportieren:
<!-- Success für positive, bestätigende Aktionen -->
<button class="btn btn-success">Speichern</button>
<button class="btn btn-success">Bestätigen</button>
<button class="btn btn-success">Freigeben</button>
<!-- Danger für kritische oder irreversible Aktionen -->
<button class="btn btn-danger">Löschen</button>
<button class="btn btn-danger">Konto deaktivieren</button>
<button class="btn btn-danger">Permanent entfernen</button>
<!-- Warning für Aktionen, die Vorsicht erfordern -->
<button class="btn btn-warning">Überschreiben</button>
<button class="btn btn-warning">Änderungen verwerfen</button>
<button class="btn btn-warning">Zurücksetzen</button>
<!-- Info für informative oder neutrale Aktionen -->
<button class="btn btn-info">Details anzeigen</button>
<button class="btn btn-info">Mehr erfahren</button>
<button class="btn btn-info">Hilfe öffnen</button>Die Farbwahl sollte immer zur Funktionalität passen. Ein roter “Speichern”-Button oder ein grüner “Löschen”-Button senden widersprüchliche Signale.
Bootstrap bietet drei Standardgrößen plus eine Block-Variante:
<!-- Große Buttons für prominente Aktionen -->
<button class="btn btn-primary btn-lg">Große Aktion</button>
<!-- Standard-Buttons für reguläre Verwendung -->
<button class="btn btn-primary">Standard-Button</button>
<!-- Kleine Buttons für kompakte Bereiche -->
<button class="btn btn-primary btn-sm">Kleine Aktion</button>Large Buttons (btn-lg) eignen sich
für:
Standard-Buttons sind optimal für:
Small Buttons (btn-sm) funktionieren
gut in:
Bootstrap implementiert automatisch Hover-Effekte für alle Button-Stile. Diese visuellen Rückmeldungen bestätigen Interaktivität und bereiten auf die Aktion vor.
<!-- Automatische Hover-Effekte bei allen Button-Stilen -->
<button class="btn btn-primary">Hover-Effekt testen</button>
<button class="btn btn-outline-success">Outline mit Hover</button>Der Active-State simuliert das physische Drücken eines Buttons:
<!-- Manuell aktivierter Zustand -->
<button class="btn btn-primary active">Aktiver Button</button>Deaktivierte Buttons kommunizieren, dass eine Aktion momentan nicht verfügbar ist:
<!-- Verschiedene Methoden der Deaktivierung -->
<button class="btn btn-primary" disabled>Nicht verfügbar</button>
<button class="btn btn-success" disabled>Wird verarbeitet...</button>
<!-- Mit disabled-Attribut für semantische Korrektheit -->
<button class="btn btn-danger" disabled="disabled">Berechtigung fehlt</button>Deaktivierte Buttons:
Outline-Buttons bieten eine weniger dominante Alternative zu gefüllten Buttons:
<!-- Outline-Varianten aller kontextuellen Stile -->
<button class="btn btn-outline-primary">Primär Outline</button>
<button class="btn btn-outline-secondary">Sekundär Outline</button>
<button class="btn btn-outline-success">Success Outline</button>
<button class="btn btn-outline-danger">Danger Outline</button>
<button class="btn btn-outline-warning">Warning Outline</button>
<button class="btn btn-outline-info">Info Outline</button>Outline-Buttons eignen sich besonders für:
<!-- Praktische Kombination: Primary + Outline -->
<div class="d-flex gap-2">
<button class="btn btn-primary">Hauptaktion</button>
<button class="btn btn-outline-secondary">Alternative</button>
</div>Button-Gruppen fassen thematisch verwandte Aktionen zusammen und sparen Platz im Interface:
<!-- Horizontale Button-Gruppe -->
<div class="btn-group" role="group" aria-label="Textformatierung">
<button type="button" class="btn btn-outline-secondary">Fett</button>
<button type="button" class="btn btn-outline-secondary">Kursiv</button>
<button type="button" class="btn btn-outline-secondary">Unterstrichen</button>
</div>Die role="group" und aria-label Attribute
verbessern die Accessibility für Screenreader-Nutzer.
Für spezielle Layouts oder mobile Interfaces können Button-Gruppen vertikal angeordnet werden:
<!-- Vertikale Button-Gruppe für Navigation -->
<div class="btn-group-vertical" role="group" aria-label="Hauptnavigation">
<button type="button" class="btn btn-outline-primary">Dashboard</button>
<button type="button" class="btn btn-outline-primary">Projekte</button>
<button type="button" class="btn btn-outline-primary">Berichte</button>
<button type="button" class="btn btn-outline-primary">Einstellungen</button>
</div>Verschiedene Button-Stile können in einer Gruppe kombiniert werden, um Hierarchien zu schaffen:
<!-- Button-Gruppe mit unterschiedlichen Prioritäten -->
<div class="btn-group" role="group" aria-label="Dokument-Aktionen">
<button type="button" class="btn btn-success">Speichern</button>
<button type="button" class="btn btn-outline-secondary">Vorschau</button>
<button type="button" class="btn btn-outline-danger">Löschen</button>
</div>Auf kleinen Bildschirmen können Buttons die volle Breite einnehmen:
<!-- Button nimmt volle Breite ein -->
<div class="d-grid">
<button class="btn btn-primary">Volle Breite</button>
</div>
<!-- Mehrere Block-Buttons mit Abstand -->
<div class="d-grid gap-2">
<button class="btn btn-primary">Erste Aktion</button>
<button class="btn btn-outline-secondary">Zweite Aktion</button>
</div>Mit Bootstrap’s Flexbox-Utilities können Buttons responsiv angeordnet werden:
<!-- Desktop: nebeneinander, Mobile: gestapelt -->
<div class="d-grid d-md-flex gap-2">
<button class="btn btn-primary">Desktop: Inline</button>
<button class="btn btn-outline-secondary">Mobile: Gestapelt</button>
<button class="btn btn-info">Automatische Anpassung</button>
</div>Bootstrap-Button-Stile können auf verschiedene HTML-Elemente angewendet werden:
<!-- Button-Styling auf verschiedenen Elementen -->
<button class="btn btn-primary">Standard Button-Element</button>
<a class="btn btn-primary" href="#" role="button">Link als Button</a>
<input class="btn btn-primary" type="button" value="Input Button">
<input class="btn btn-primary" type="submit" value="Submit Button">Wählen Sie das richtige HTML-Element basierend auf der Funktion:
<button> für Aktionen innerhalb der Seite<a> für Navigation zu anderen Seiten<input type="submit"> für
Formular-Übermittlungen<input type="button"> für JavaScript-gesteuerte
AktionenHier ist eine vollständige Implementierung, die verschiedene Button-Konzepte demonstriert:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Produktkarte mit Bootstrap-Buttons</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light p-4">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-6 col-lg-4">
<div class="card shadow">
<!-- Produktbild-Platzhalter -->
<div class="bg-secondary d-flex align-items-center justify-content-center" style="height: 200px;">
<span class="text-white">Produktbild</span>
</div>
<div class="card-body">
<!-- Produktinformationen -->
<h5 class="card-title">Bluetooth Kopfhörer</h5>
<p class="card-text text-muted">
Kabellose Kopfhörer mit aktiver Geräuschunterdrückung
und 30h Akkulaufzeit.
</p>
<!-- Preis und Status -->
<div class="d-flex justify-content-between align-items-center mb-3">
<span class="h4 mb-0 text-primary">€149,99</span>
<span class="badge bg-success">Verfügbar</span>
</div>
<!-- Hauptaktionen: Primary + Secondary -->
<div class="d-grid gap-2 mb-3">
<button class="btn btn-primary btn-lg">In den Warenkorb</button>
<button class="btn btn-outline-secondary">Auf Wunschliste</button>
</div>
<!-- Zusätzliche Optionen als Button-Gruppe -->
<div class="btn-group w-100 mb-3" role="group" aria-label="Produktoptionen">
<button type="button" class="btn btn-outline-info btn-sm">Details</button>
<button type="button" class="btn btn-outline-info btn-sm">Vergleichen</button>
<button type="button" class="btn btn-outline-info btn-sm">Bewertungen</button>
</div>
<!-- Dezente Zusatzaktion -->
<div class="text-center">
<button class="btn btn-link btn-sm text-muted">Problem melden</button>
</div>
</div>
<!-- Zusätzliche Informationen -->
<div class="card-footer bg-light">
<div class="row text-center">
<div class="col-6">
<small class="text-success">✓ Kostenloser Versand</small>
</div>
<div class="col-6">
<small class="text-info">ℹ 24 Monate Garantie</small>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Zusatzbeispiel: Button-States-Demo -->
<div class="row justify-content-center mt-5">
<div class="col-lg-8">
<div class="card">
<div class="card-header">
<h5 class="mb-0">Button-Zustände in der Praxis</h5>
</div>
<div class="card-body">
<!-- Verfügbare Aktionen -->
<div class="mb-4">
<h6>Verfügbare Aktionen:</h6>
<div class="d-flex flex-wrap gap-2">
<button class="btn btn-primary">Neues Dokument</button>
<button class="btn btn-outline-secondary">Vorlage laden</button>
<button class="btn btn-success">Speichern</button>
</div>
</div>
<!-- Deaktivierte Aktionen mit Begründung -->
<div class="mb-4">
<h6>Momentan nicht verfügbar:</h6>
<div class="d-flex flex-wrap gap-2">
<button class="btn btn-primary" disabled>Dokument erstellen (Speicher voll)</button>
<button class="btn btn-outline-danger" disabled>Löschen (Keine Berechtigung)</button>
<button class="btn btn-success" disabled>Veröffentlichen (Wird überprüft...)</button>
</div>
<small class="text-muted d-block mt-2">
Hinweis: Buttons werden aktiviert, sobald die Bedingungen erfüllt sind.
</small>
</div>
<!-- Responsive Layout-Demo -->
<div>
<h6>Responsive Button-Anordnung:</h6>
<div class="d-grid d-md-flex gap-2">
<button class="btn btn-primary">Desktop: Nebeneinander</button>
<button class="btn btn-outline-secondary">Mobile: Gestapelt</button>
<button class="btn btn-info">Automatische Anpassung</button>
</div>
<small class="text-muted d-block mt-2">
Ändern Sie die Fenstergröße, um das responsive Verhalten zu testen.
</small>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Bootstrap JavaScript für interaktive Komponenten -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>Problematisch:
<!-- Unklare Hierarchie durch zufällige Größen -->
<button class="btn btn-secondary btn-lg">Unwichtige Aktion</button>
<button class="btn btn-primary btn-sm">Hauptaktion</button>Korrekt:
<!-- Klare Hierarchie durch logische Größenverteilung -->
<button class="btn btn-primary btn-lg">Hauptaktion</button>
<button class="btn btn-secondary">Sekundäre Aktion</button>Problematisch:
<!-- Widersprüchliche Signale durch falsche Farben -->
<button class="btn btn-danger">Speichern</button>
<button class="btn btn-success">Löschen</button>Korrekt:
<!-- Farbwahl entspricht der Funktionalität -->
<button class="btn btn-success">Speichern</button>
<button class="btn btn-danger">Löschen</button>Problematisch:
<!-- Zu viele verschiedene Stile auf einer Seite -->
<button class="btn btn-primary">Aktion 1</button>
<button class="btn btn-success">Aktion 2</button>
<button class="btn btn-danger">Aktion 3</button>
<button class="btn btn-warning">Aktion 4</button>
<button class="btn btn-info">Aktion 5</button>Korrekt:
<!-- Begrenzte, logische Farbauswahl -->
<button class="btn btn-primary">Hauptaktion</button>
<button class="btn btn-outline-secondary">Alternative</button>
<button class="btn btn-outline-danger">Kritische Aktion</button>Alle Bootstrap-Button-Stile erfüllen die WCAG-Richtlinien für Farbkontraste. Bei eigenen Anpassungen sollten Sie diese Standards beibehalten.
Buttons müssen mit der Tab-Taste erreichbar und mit Enter/Space aktivierbar sein:
<!-- Korrekte Tastatur-Unterstützung -->
<button class="btn btn-primary" tabindex="0">Tastaturzugänglich</button>
<!-- Für deaktivierte Buttons -->
<button class="btn btn-primary" disabled tabindex="-1">Nicht erreichbar</button>Verwenden Sie aussagekräftige Button-Texte oder ARIA-Labels:
<!-- Klarer Button-Text -->
<button class="btn btn-primary">Dokument speichern</button>
<!-- Bei Icon-Buttons: ARIA-Label verwenden -->
<button class="btn btn-outline-secondary" aria-label="Dokument bearbeiten">
<i class="fas fa-edit"></i>
</button>Bootstrap-Buttons bieten eine solide Grundlage für intuitive und zugängliche Benutzeroberflächen. Durch das Verständnis der verschiedenen Stile, Größen und Zustände können Sie konsistente und professionelle Interfaces erstellen, die Benutzer effektiv durch Ihre Anwendung führen.