Bootstrap verwendet ein systematisches Spacing-System, das auf einer mathematischen Skala basiert und konsistente Abstände in Benutzeroberflächen ermöglicht. Das System nutzt rem-Einheiten, die sich an der Grundschriftgröße orientieren und damit zugänglich und skalierbar sind.
Das Spacing-System basiert auf einer Skala von 0 bis 5, wobei jeder Wert ein Vielfaches der Grundeinheit 1rem (standardmäßig 16px) darstellt:
Diese Progression ermöglicht sowohl feine Abstimmungen als auch deutliche Abgrenzungen zwischen UI-Elementen.
Bootstrap-Spacing-Klassen folgen einem einheitlichen Namensschema:
{eigenschaft}{seiten}-{größe}. Dieses System ermöglicht
präzise Kontrolle über Abstände in alle Richtungen.
m - margin (Außenabstand)p - padding (Innenabstand)t - top (oben)b - bottom (unten)s - start (links in LTR-Sprachen, rechts in
RTL-Sprachen)e - end (rechts in LTR-Sprachen, links in
RTL-Sprachen)x - horizontal (links und rechts)y - vertikal (oben und unten)<!-- Margin-Beispiele -->
<div class="m-3">Margin auf allen Seiten (1rem)</div>
<div class="mt-2">Nur Margin-top (0.5rem)</div>
<div class="mx-4">Horizontaler Margin (1.5rem links und rechts)</div>
<div class="my-1">Vertikaler Margin (0.25rem oben und unten)</div>
<!-- Padding-Beispiele -->
<div class="p-3">Padding auf allen Seiten (1rem)</div>
<div class="pt-2">Nur Padding-top (0.5rem)</div>
<div class="px-4">Horizontales Padding (1.5rem links und rechts)</div>
<div class="py-1">Vertikales Padding (0.25rem oben und unten)</div>Positive Margins schaffen Abstand zwischen Elementen und strukturieren den visuellen Aufbau:
<div class="container">
<!-- Verschiedene Margin-Größen für verschiedene Hierarchieebenen -->
<h2 class="mb-3">Hauptüberschrift</h2>
<p class="text-muted mb-1">Autor: Max Mustermann</p>
<p class="mb-4">Veröffentlicht: 15. März 2024</p>
<p class="mb-3">Erster Absatz mit normalem Abstand zum folgenden Element.</p>
<p class="mb-4">Zweiter Absatz mit größerem Abstand, der einen Themenwechsel signalisiert.</p>
<h3 class="mt-5 mb-3">Unterüberschrift</h3>
<p class="mb-3">Text der neuen Sektion mit deutlicher Abgrenzung nach oben.</p>
</div>Bootstrap bietet negative Margins (n1 bis n5) für Überlappungseffekte:
<!-- Negative Margins für Überlappungen -->
<div class="bg-primary text-white p-4 mb-3">
<h4>Erster Container</h4>
<p class="mb-0">Standard-Abstand nach unten</p>
</div>
<div class="bg-secondary text-white p-4 mt-n3">
<h4>Zweiter Container</h4>
<p class="mb-0">Überlappt durch negativen Margin-top</p>
</div>Negative Margins sollten vorsichtig eingesetzt werden, da sie das normale Layout-Verhalten durchbrechen können.
Auto-Margins ermöglichen flexible Positionierung, besonders in Flexbox-Kontexten:
<!-- Horizontale Zentrierung -->
<div class="mx-auto bg-light p-3" style="width: 300px;">
<p class="text-center mb-0">Horizontal zentriert</p>
</div>
<!-- Flexbox mit Auto-Margins -->
<div class="d-flex align-items-center p-3 bg-light">
<span>Links</span>
<span class="ms-auto">Rechts durch ms-auto</span>
</div>
<!-- Vertikale Zentrierung in Flexbox -->
<div class="d-flex flex-column align-items-center" style="height: 150px;">
<div>Oben</div>
<div class="my-auto">Vertikal zentriert</div>
<div>Unten</div>
</div>Padding definiert den Innenabstand zwischen dem Elementrand und seinem Inhalt. Es beeinflusst die Klickfläche und Lesbarkeit von UI-Elementen.
<!-- Verschiedene Padding-Strategien für verschiedene Komponenten -->
<!-- Kompakte Buttons -->
<button class="btn btn-primary px-2 py-1 me-2">Kompakt</button>
<button class="btn btn-primary me-2">Standard</button>
<button class="btn btn-primary px-4 py-3">Großzügig</button>
<!-- Cards mit unterschiedlichem Padding -->
<div class="row mt-4">
<div class="col-md-6">
<div class="card">
<div class="card-body p-2">
<h6 class="card-title">Kompakte Card</h6>
<p class="card-text mb-0">Minimales Padding für dichte Layouts</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body p-4">
<h5 class="card-title">Großzügige Card</h5>
<p class="card-text mb-0">Mehr Padding für entspannte Layouts</p>
</div>
</div>
</div>
</div><!-- Asymmetrisches Padding für visuelle Gewichtung -->
<div class="bg-light p-3">
<div class="ps-4 pe-2 py-3">
<h5>Asymmetrisches Design</h5>
<p class="mb-0">Unterschiedliches horizontales Padding schafft visuelle Akzente</p>
</div>
</div>
<!-- Navigation mit spezifischem Padding -->
<nav class="bg-dark">
<div class="container">
<div class="d-flex align-items-center py-3">
<div class="pe-4">
<strong class="text-white">Logo</strong>
</div>
<div class="px-3">
<a href="#" class="text-white text-decoration-none">Home</a>
</div>
<div class="px-3">
<a href="#" class="text-white text-decoration-none">About</a>
</div>
</div>
</div>
</nav>Bootstrap-Spacing-Klassen können mit Breakpoint-Präfixen kombiniert werden, um responsive Abstände zu erstellen.
<!-- Spacing das sich an Bildschirmgröße anpasst -->
<div class="p-2 p-md-4 p-lg-5 bg-primary text-white">
<h4>Responsive Padding</h4>
<p class="mb-0">
Small: 0.5rem, Medium: 1.5rem, Large: 3rem Padding
</p>
</div>
<!-- Verschiedene Margins für verschiedene Bildschirmgrößen -->
<div class="mb-2 mb-sm-3 mb-md-4 mb-lg-5 bg-info text-white p-3">
<h5>Adaptive Margins</h5>
<p class="mb-0">Bottom-Margin wächst mit der Bildschirmgröße</p>
</div>
<!-- Conditional Spacing: nur bei bestimmten Größen -->
<div class="mt-0 mt-lg-4 bg-warning text-dark p-3">
<h5>Conditional Margin</h5>
<p class="mb-0">Margin-top nur auf large+ Bildschirmen</p>
</div><!-- Artikel-Layout mit responsivem Spacing -->
<article class="container my-3 my-md-5">
<header class="mb-3 mb-md-4">
<h1 class="mb-2 mb-md-3">Artikel-Titel</h1>
<div class="text-muted mb-1">Autor</div>
<div class="small text-muted">Datum</div>
</header>
<div class="mb-3 mb-md-4">
<p class="mb-2 mb-md-3">
Absatz mit responsiven Abständen für optimale Lesbarkeit
auf verschiedenen Bildschirmgrößen.
</p>
<blockquote class="blockquote my-3 my-md-5 px-3 px-md-4 py-2 py-md-3 bg-light border-start border-primary border-4">
<p class="mb-2">Hervorgehobenes Zitat mit responsivem Spacing</p>
<footer class="blockquote-footer mb-0">Autor des Zitats</footer>
</blockquote>
<p class="mb-2 mb-md-3">
Fortsetzung des Artikels mit konsistenten responsiven Abständen.
</p>
</div>
</article>Bootstrap’s Display-Utilities ermöglichen präzise Kontrolle über das Renderverhalten von Elementen.
<!-- Block-Elemente: nehmen volle Breite ein -->
<span class="d-block bg-primary text-white p-2 mb-2">
Span als Block-Element
</span>
<span class="d-block bg-secondary text-white p-2 mb-2">
Stapeln sich vertikal
</span>
<!-- Inline-Elemente: fließen im Textfluss -->
<div class="mb-3">
<div class="d-inline bg-success text-white p-2 me-1">Inline 1</div>
<div class="d-inline bg-info text-white p-2 me-1">Inline 2</div>
<div class="d-inline bg-warning text-dark p-2">Inline 3</div>
</div>
<!-- Inline-Block: Größe definierbar, aber inline -->
<div class="d-inline-block bg-danger text-white p-3 me-2" style="width: 120px;">
Inline-Block 1
</div>
<div class="d-inline-block bg-dark text-white p-3" style="width: 120px;">
Inline-Block 2
</div><!-- Flexbox-Container mit Alignment-Kontrolle -->
<div class="d-flex justify-content-between align-items-center bg-light p-3 mb-3">
<div class="bg-primary text-white p-2">Start</div>
<div class="bg-secondary text-white p-2">Center</div>
<div class="bg-success text-white p-2">End</div>
</div>
<!-- Flex-Direction Kontrolle -->
<div class="d-flex flex-column bg-light p-3 mb-3">
<div class="bg-info text-white p-2 mb-2">Erste Zeile</div>
<div class="bg-warning text-dark p-2 mb-2">Zweite Zeile</div>
<div class="bg-danger text-white p-2">Dritte Zeile</div>
</div>
<!-- Responsive Flexbox -->
<div class="d-block d-md-flex gap-3">
<div class="bg-primary text-white p-3 mb-2 mb-md-0">
Mobile: Block, Desktop: Flex-Item
</div>
<div class="bg-secondary text-white p-3">
Automatische Anpassung
</div>
</div><!-- Elemente verstecken und zeigen -->
<div class="d-block bg-primary text-white p-2 mb-2">Immer sichtbar</div>
<div class="d-none bg-secondary text-white p-2 mb-2">Versteckt (d-none)</div>
<div class="invisible bg-success text-white p-2 mb-2">Unsichtbar (Platz belegt)</div>
<!-- Responsive Sichtbarkeit -->
<div class="d-none d-md-block bg-info text-white p-3 mb-2">
Nur auf Medium+ Bildschirmen sichtbar
</div>
<div class="d-block d-md-none bg-warning text-dark p-3 mb-2">
Nur auf kleinen Bildschirmen sichtbar
</div>
<div class="d-none d-lg-block bg-success text-white p-3">
Nur auf Large+ Bildschirmen sichtbar
</div>Position-Utilities ermöglichen die Kontrolle über die Elementpositionierung außerhalb des normalen Dokumentenflusses.
<!-- Relative Positionierung als Bezugsrahmen -->
<div class="position-relative bg-light p-4 mb-3" style="height: 120px;">
<p class="mb-2">Relativ positionierter Container</p>
<!-- Absolut positionierte Kindelemente -->
<span class="position-absolute top-0 start-0 bg-primary text-white p-2 small">
Oben links
</span>
<span class="position-absolute top-0 end-0 bg-secondary text-white p-2 small">
Oben rechts
</span>
<span class="position-absolute bottom-0 start-50 translate-middle-x bg-success text-white p-2 small">
Unten mitte
</span>
</div><!-- Sticky Header-Beispiel -->
<div class="position-sticky top-0 bg-warning text-dark p-3 mb-3" style="z-index: 1020;">
<strong>Sticky Header - bleibt beim Scrollen oben</strong>
</div>
<div style="height: 100px;" class="bg-light p-3">
<p>Scroll-Inhalt um Sticky-Verhalten zu testen</p>
</div><!-- Überlappende Elemente mit Z-Index-Kontrolle -->
<div class="position-relative bg-light p-4" style="height: 200px;">
<div class="position-absolute bg-primary text-white p-3"
style="top: 20px; left: 20px; z-index: 1;">
Z-Index: 1
</div>
<div class="position-absolute bg-secondary text-white p-3"
style="top: 40px; left: 40px; z-index: 3;">
Z-Index: 3 (vorne)
</div>
<div class="position-absolute bg-success text-white p-3"
style="top: 60px; left: 60px; z-index: 2;">
Z-Index: 2
</div>
</div><section class="py-5 py-md-6">
<div class="container">
<!-- Sektion-Header mit responsivem Spacing -->
<div class="text-center mb-4 mb-md-5">
<h2 class="h1 mb-3">Unsere Services</h2>
<p class="lead text-muted mx-auto" style="max-width: 600px;">
Professionelle Lösungen für Ihr Business
</p>
</div>
<!-- Service-Cards mit gleichmäßigem Spacing -->
<div class="row g-4 g-md-5">
<div class="col-12 col-md-6 col-lg-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body p-4 p-md-5 text-center">
<div class="bg-primary bg-opacity-10 rounded-circle d-inline-flex align-items-center justify-content-center mb-3"
style="width: 80px; height: 80px;">
<i class="fas fa-rocket text-primary" style="font-size: 2rem;"></i>
</div>
<h3 class="h4 mb-3">Performance</h3>
<p class="text-muted mb-0">
Optimierte Lösungen für maximale Geschwindigkeit
und Benutzerfreundlichkeit
</p>
</div>
</div>
</div>
<div class="col-12 col-md-6 col-lg-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body p-4 p-md-5 text-center">
<div class="bg-success bg-opacity-10 rounded-circle d-inline-flex align-items-center justify-content-center mb-3"
style="width: 80px; height: 80px;">
<i class="fas fa-shield-alt text-success" style="font-size: 2rem;"></i>
</div>
<h3 class="h4 mb-3">Sicherheit</h3>
<p class="text-muted mb-0">
Enterprise-Grade Sicherheit mit modernsten
Verschlüsselungstechnologien
</p>
</div>
</div>
</div>
<div class="col-12 col-lg-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body p-4 p-md-5 text-center">
<div class="bg-info bg-opacity-10 rounded-circle d-inline-flex align-items-center justify-content-center mb-3"
style="width: 80px; height: 80px;">
<i class="fas fa-cogs text-info" style="font-size: 2rem;"></i>
</div>
<h3 class="h4 mb-3">Automatisierung</h3>
<p class="text-muted mb-0">
Intelligente Workflows reduzieren manuellen Aufwand
und Fehlerquellen
</p>
</div>
</div>
</div>
</div>
</div>
</section><div class="container-fluid">
<div class="row">
<!-- Sidebar mit optimiertem Padding -->
<div class="col-12 col-md-3 col-lg-2 bg-dark text-white p-0">
<div class="p-3 p-md-4">
<h4 class="mb-3 mb-md-4">Dashboard</h4>
<nav>
<ul class="nav flex-column gap-1">
<li class="nav-item">
<a class="nav-link text-white px-0 py-2" href="#">Übersicht</a>
</li>
<li class="nav-item">
<a class="nav-link text-white px-0 py-2" href="#">Analytics</a>
</li>
<li class="nav-item">
<a class="nav-link text-white px-0 py-2" href="#">Einstellungen</a>
</li>
</ul>
</nav>
</div>
</div>
<!-- Hauptinhalt mit strukturiertem Spacing -->
<div class="col-12 col-md-9 col-lg-10">
<!-- Header mit responsivem Padding -->
<div class="bg-light border-bottom px-3 px-md-4 py-3">
<h1 class="h3 mb-0">Dashboard-Übersicht</h1>
</div>
<!-- Content Area -->
<div class="p-3 p-md-4">
<!-- Statistik-Cards mit einheitlichem Gap -->
<div class="row g-3 g-md-4 mb-4 mb-md-5">
<div class="col-12 col-sm-6 col-lg-3">
<div class="card border-0 shadow-sm">
<div class="card-body p-3 p-md-4 text-center">
<h3 class="h2 text-primary mb-1">1,234</h3>
<p class="text-muted small mb-0">Aktive Nutzer</p>
</div>
</div>
</div>
<div class="col-12 col-sm-6 col-lg-3">
<div class="card border-0 shadow-sm">
<div class="card-body p-3 p-md-4 text-center">
<h3 class="h2 text-success mb-1">€45.6K</h3>
<p class="text-muted small mb-0">Monatsumsatz</p>
</div>
</div>
</div>
<div class="col-12 col-sm-6 col-lg-3">
<div class="card border-0 shadow-sm">
<div class="card-body p-3 p-md-4 text-center">
<h3 class="h2 text-info mb-1">567</h3>
<p class="text-muted small mb-0">Neue Bestellungen</p>
</div>
</div>
</div>
<div class="col-12 col-sm-6 col-lg-3">
<div class="card border-0 shadow-sm">
<div class="card-body p-3 p-md-4 text-center">
<h3 class="h2 text-warning mb-1">98.5%</h3>
<p class="text-muted small mb-0">Zufriedenheit</p>
</div>
</div>
</div>
</div>
<!-- Charts und Details mit Spacing-Optimierung -->
<div class="row g-3 g-md-4">
<div class="col-12 col-lg-8">
<div class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom px-3 px-md-4 py-3">
<h5 class="mb-0">Verkaufs-Trend</h5>
</div>
<div class="card-body p-3 p-md-4">
<div class="bg-light rounded p-4 p-md-5 text-center">
<p class="text-muted mb-0">Chart-Platzhalter</p>
</div>
</div>
</div>
</div>
<div class="col-12 col-lg-4">
<div class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom px-3 px-md-4 py-3">
<h5 class="mb-0">Letzte Aktivitäten</h5>
</div>
<div class="card-body p-0">
<div class="list-group list-group-flush">
<div class="list-group-item px-3 px-md-4 py-3 border-0">
<div class="d-flex">
<div class="bg-primary rounded-circle me-3" style="width: 8px; height: 8px; margin-top: 6px;"></div>
<div class="flex-grow-1">
<p class="mb-1 small">Neue Benutzerregistrierung</p>
<p class="mb-0 text-muted small">vor 5 Minuten</p>
</div>
</div>
</div>
<div class="list-group-item px-3 px-md-4 py-3 border-0">
<div class="d-flex">
<div class="bg-success rounded-circle me-3" style="width: 8px; height: 8px; margin-top: 6px;"></div>
<div class="flex-grow-1">
<p class="mb-1 small">Bestellung eingegangen</p>
<p class="mb-0 text-muted small">vor 12 Minuten</p>
</div>
</div>
</div>
<div class="list-group-item px-3 px-md-4 py-3 border-0">
<div class="d-flex">
<div class="bg-info rounded-circle me-3" style="width: 8px; height: 8px; margin-top: 6px;"></div>
<div class="flex-grow-1">
<p class="mb-1 small">Zahlung verarbeitet</p>
<p class="mb-0 text-muted small">vor 28 Minuten</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>Vertikale Margins können “kollabieren” (collapse), wodurch unerwartete Abstände entstehen:
<!-- Problem: Margin-Collapse -->
<div class="mb-4 bg-primary text-white p-3">
Element mit margin-bottom: 1.5rem
</div>
<div class="mt-4 bg-secondary text-white p-3">
Element mit margin-top: 1.5rem
<!-- Tatsächlicher Abstand: nur 1.5rem, nicht 3rem -->
</div>
<!-- Lösung: Konsistente Margin-Richtung -->
<div class="mb-4 bg-success text-white p-3">
Nur Bottom-Margins verwenden
</div>
<div class="mb-4 bg-info text-white p-3">
Konsistente Spacing-Strategie
</div>
<div class="bg-warning text-dark p-3">
Vorhersagbare Abstände
</div><!-- Problem: Übermäßiges Padding auf kleinen Containern -->
<div class="container" style="max-width: 300px;">
<div class="px-5 bg-danger text-white p-3">
Zu viel horizontales Padding kann zu Problemen führen
</div>
</div>
<!-- Lösung: Responsive Padding -->
<div class="container mt-3" style="max-width: 300px;">
<div class="px-2 px-md-4 px-lg-5 bg-success text-white p-3">
Responsives Padding passt sich an verfügbaren Platz an
</div>
</div><!-- Problematisch: Inkonsistente Abstände -->
<div class="mb-2 bg-light p-3">Element 1</div>
<div class="mb-5 bg-light p-3">Element 2 (zu großer Sprung)</div>
<div class="mb-1 bg-light p-3">Element 3</div>
<!-- Besser: Konsistente Spacing-Hierarchie -->
<div class="mb-3 bg-light p-3">Element 1 (Standardabstand)</div>
<div class="mb-4 bg-light p-3">Element 2 (Sektionsabstand)</div>
<div class="mb-3 bg-light p-3">Element 3 (Standardabstand)</div>Entwickeln Sie eine konsistente Spacing-Strategie für Ihr Projekt:
<!-- Responsive Spacing-Pattern -->
<section class="py-3 py-md-5 py-lg-6">
<div class="container">
<div class="mb-3 mb-md-4 mb-lg-5">
<h2 class="mb-2 mb-md-3">Section Title</h2>
<p class="mb-0">Section description</p>
</div>
<div class="row g-3 g-md-4 g-lg-5">
<!-- Content mit responsive gaps -->
</div>
</div>
</section>Nutzen Sie Browser-Entwicklertools zum Debugging von Spacing-Problemen:
<!-- Temporäres Debug-CSS -->
<style>
.debug-spacing * {
outline: 1px solid red !important;
}
.debug-spacing [class*="m-"],
.debug-spacing [class*="p-"] {
outline: 2px solid blue !important;
}
</style>
<!-- Debug-Klasse aktivieren -->
<div class="debug-spacing">
<!-- Ihr Layout hier -->
</div>Bootstrap’s Spacing- und Layout-Utilities bieten umfassende Kontrolle über die visuelle Struktur von Benutzeroberflächen. Durch systematische Anwendung dieser Tools können Sie konsistente, professionelle und responsive Layouts erstellen, die auf allen Geräten optimal funktionieren. Die Kombination aus flexiblen Spacing-Optionen und modernen Layout-Techniken wie Flexbox ermöglicht die Umsetzung komplexer Design-Anforderungen mit minimaler CSS-Entwicklung.