Appearance
Kapitel 11: Automatisches Grid (auto-fill & auto-fit)
🎯 Lernziele
In diesem Kapitel lernen Sie:
- ✅
auto-fillundauto-fitverstehen - ✅ Responsive Grids ohne Media Queries erstellen
- ✅
minmax()mit automatischem Grid kombinieren - ✅ Häufige Fehler vermeiden
11.1 auto-fill: Automatisches Auffüllen
📖 Definition
auto-fill erstellt so viele Spalten-Tracks wie möglich, auch wenn diese leer sind.
🎨 Visuelle Erklärung
Container: 1200px breit, Spalte: 200px
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ │ │ │ │ │ │ ← 6 Spalten (3 gefüllt, 3 leer)
└──────┴──────┴──────┴──────┴──────┴──────┘💻 Syntax
css
.container {
grid-template-columns: repeat(auto-fill, 200px);
}💻 Beispiel
HTML:
html
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>CSS:
css
.container {
display: grid;
grid-template-columns: repeat(auto-fill, 200px);
gap: 20px;
padding: 20px;
background-color: #f0f0f0;
}
.item {
background-color: #3498db;
color: white;
padding: 40px;
text-align: center;
font-size: 24px;
}🔑 Wichtige Punkte
- ✅ Erstellt so viele 200px Spalten wie in den Container passen
- ✅ Auch leere Spalten werden erstellt
- ✅ Wenn schmaler wird, verringert sich die Spaltenanzahl
11.2 auto-fit: Automatisches Anpassen
📖 Definition
auto-fit verhält sich ähnlich wie auto-fill, dehnt aber leere Spalten auf 0 und verteilt den Platz auf gefüllte Spalten.
🎨 Visuelle Erklärung
auto-fill (leere Spalten bleiben):
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ 1 │ 2 │ 3 │ │ │ │ ← Leere Spalten nehmen Platz ein
└──────┴──────┴──────┴──────┴──────┴──────┘auto-fit (leere Spalten verschwinden, gefüllte dehnen sich):
┌─────────────┬─────────────┬─────────────┐
│ 1 │ 2 │ 3 │ ← Gefüllte Spalten dehnen sich
└─────────────┴─────────────┴─────────────┘💻 Syntax
css
.container {
grid-template-columns: repeat(auto-fit, 200px);
}💻 Beispiel
CSS:
css
.container {
display: grid;
grid-template-columns: repeat(auto-fit, 200px);
gap: 20px;
padding: 20px;
background-color: #f0f0f0;
}🔑 Unterschied zu auto-fill
| Eigenschaft | Verhalten bei wenig Inhalt |
|---|---|
auto-fill | Leere Spalten bleiben erhalten |
auto-fit | Leere Spalten verschwinden, gefüllte dehnen sich |
11.3 minmax() kombinieren
📖 Grundlegende Syntax
css
.container {
grid-template-columns: repeat(auto-fit, minmax(<Min>, <Max>));
}💻 Beispiel: Responsives Grid ohne Media Queries
CSS:
css
.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
padding: 20px;
}
.item {
background-color: #3498db;
color: white;
padding: 40px;
text-align: center;
font-size: 20px;
border-radius: 8px;
}🎯 Was passiert?
- ✅ Jede Spalte ist mindestens 250px breit
- ✅ Wenn genug Platz ist, dehnen sich Spalten auf 1fr (gleicher Anteil)
- ✅ Wenn 250px nicht mehr passen, bricht es in neue Zeile
- ✅ Keine Media Queries nötig!
🔍 Visuelles Ergebnis
Breitbildschirm (> 1200px):
┌───────────────┬───────────────┬───────────────┬───────────────┐
│ │ │ │ │
│ Item 1 │ Item 2 │ Item 3 │ Item 4 │
│ │ │ │ │
└───────────────┴───────────────┴───────────────┴───────────────┘Tablet (768px - 1024px):
┌─────────────────────┬─────────────────────┐
│ │ │
│ Item 1 │ Item 2 │
│ │ │
├─────────────────────┼─────────────────────┤
│ │ │
│ Item 3 │ Item 4 │
│ │ │
└─────────────────────┴─────────────────────┘Mobile (< 768px):
┌───────────────────────────────────────┐
│ │
│ Item 1 │
│ │
├───────────────────────────────────────┤
│ │
│ Item 2 │
│ │
└───────────────────────────────────────┘11.4 auto-fill vs. auto-fit: Detaillierter Vergleich
📊 Vergleichstabelle
| Szenario | auto-fill | auto-fit |
|---|---|---|
| Viele Elemente | Identisch | Identisch |
| Wenig Elemente (breiter Container) | Leere Spalten sichtbar | Leere Spalten verschwinden |
| Responsives Verhalten | Kann "Lücken" hinterlassen | Passt sich besser an |
| Empfehlung | Wenn Sie feste Spaltenanzahl wollen | Für die meisten responsiven Layouts |
💻 Detailliertes Beispiel
HTML:
html
<div class="container container-fill">
<div class="item">1</div>
<div class="item">2</div>
</div>
<div class="container container-fit">
<div class="item">1</div>
<div class="item">2</div>
</div>CSS:
css
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 20px;
padding: 20px;
margin-bottom: 40px;
background-color: #f0f0f0;
}
.container-fill {
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
.container-fit {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.item {
background-color: #3498db;
color: white;
padding: 40px;
text-align: center;
font-size: 24px;
}🔍 Ergebnis-Unterschied
auto-fill (Container 1000px breit, 2 Elemente):
┌──────────┬──────────┬──────────┬──────────┬──────────┐
│ 1 │ 2 │ │ │ │
└──────────┴──────────┴──────────┴──────────┴──────────┘
← Leere Spalten nehmen Platz ein →auto-fit (Container 1000px breit, 2 Elemente):
┌──────────────────────┬──────────────────────┐
│ 1 │ 2 │
└──────────────────────┴──────────────────────┘
← Elemente dehnen sich auf gesamte Breite →11.5 Erweiterte Techniken
💻 auto-fill mit fester Spaltenanzahl begrenzen
Problem: auto-fill erstellt unendlich viele Spalten, wenn Container sehr breit ist.
Lösung: max-width auf Elemente setzen oder JavaScript verwenden.
css
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 20px;
}
.item {
max-width: 400px; /* Begrenzt Spaltenbreite */
}💻 Kombination mit fr Einheit
css
.container {
display: grid;
/* Erstellt so viele Spalten wie möglich, mindestens 200px, maximal 1fr */
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
}11.6 Praktische Übung: Responsives Produkt-Grid
🎯 Übungsziel
Erstellen Sie ein responsives Produkt-Grid ohne Media Queries.
📝 Schritt 1: HTML erstellen
html
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Responsives Grid Übung</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Unsere Produkte</h1>
<div class="products">
<div class="product">
<h3>Produkt 1</h3>
<p>Beschreibung des Produkts 1</p>
<button>Kaufen</button>
</div>
<div class="product">
<h3>Produkt 2</h3>
<p>Beschreibung des Produkts 2</p>
<button>Kaufen</button>
</div>
<div class="product">
<h3>Produkt 3</h3>
<p>Beschreibung des Produkts 3</p>
<button>Kaufen</button>
</div>
<div class="product">
<h3>Produkt 4</h3>
<p>Beschreibung des Produkts 4</p>
<button>Kaufen</button>
</div>
<div class="product">
<h3>Produkt 5</h3>
<p>Beschreibung des Produkts 5</p>
<button>Kaufen</button>
</div>
<div class="product">
<h3>Produkt 6</h3>
<p>Beschreibung des Produkts 6</p>
<button>Kaufen</button>
</div>
</div>
</body>
</html>📝 Schritt 2: CSS erstellen
css
/* style.css */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
padding: 20px;
}
h1 {
text-align: center;
margin-bottom: 40px;
color: #2c3e50;
}
.products {
display: grid;
/* MAGIE: Automatisches responsives Grid! */
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 30px;
max-width: 1400px;
margin: 0 auto;
}
.product {
background-color: white;
border-radius: 12px;
padding: 30px;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.product:hover {
transform: translateY(-8px);
box-shadow: 0 8px 20px rgba(0,0,0,0.15);
}
.product h3 {
color: #2c3e50;
margin-bottom: 15px;
font-size: 22px;
}
.product p {
color: #7f8c8d;
line-height: 1.6;
margin-bottom: 20px;
}
.product button {
background-color: #3498db;
color: white;
border: none;
padding: 12px 24px;
border-radius: 6px;
cursor: pointer;
font-size: 16px;
font-weight: bold;
transition: background-color 0.3s ease;
}
.product button:hover {
background-color: #2980b9;
}🔍 Schritt 3: Ergebnis beobachten
Was passiert automatisch:
- ✅ Desktop (> 1200px): 3-4 Spalten
- ✅ Tablet (768px - 1024px): 2 Spalten
- ✅ Mobile (< 768px): 1 Spalte
- ✅ Keine Media Queries nötig!
11.7 Häufige Fehler bei automatischem Grid
❌ Fehler 1: auto-fill und auto-fit verwechseln
Falsch (wenn Sie Elemente gestreckt wollen):
css
.container {
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
/* Bei wenig Elementen: Leere Spalten bleiben! */
}Richtig:
css
.container {
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
/* Bei wenig Elementen: Elemente dehnen sich! */
}❌ Fehler 2: minmax() falsch verwenden
Falsch:
css
.container {
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
/* Min 0: Spalten können verschwinden! */
}Richtig:
css
.container {
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
/* Min 250px: Spalten sind mindestens 250px breit */
}❌ Fehler 3: Feste Breite in repeat() verwenden
Falsch:
css
.container {
grid-template-columns: repeat(auto-fit, 250px);
/* Feste Breite: Keine Dehnung! */
}Richtig:
css
.container {
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
/* minmax: Spalten dehnen sich, wenn Platz ist */
}📝 Zusammenfassung
In diesem Kapitel haben Sie gelernt:
✅ auto-fill:
- Erstellt so viele Spalten wie möglich
- Leere Spalten bleiben erhalten
✅ auto-fit:
- Erstellt so viele Spalten wie möglich
- Leere Spalten verschwinden, gefüllte dehnen sich
✅ minmax() kombinieren:
minmax(250px, 1fr): Mindestens 250px, maximal 1fr- Ermöglicht responsive Grids ohne Media Queries
✅ Praktische Übung:
- Responsives Produkt-Grid erstellt
- Keine Media Queries verwendet
✅ Häufige Fehler:
auto-fillvs.auto-fitVerwechslungminmax()falsch verwendet- Feste Breite statt
minmax()
🎯 Nächste Schritte
Im nächsten Kapitel lernen Sie:
- 📖 Grundlegende Praxis-Projekte umsetzen
- 🎯 Einfache Layouts erstellen
- 🛠️ Häufige Anfängerfehler vermeiden
👉 Weiter zu Kapitel 12: Grundlegende Praxis
💡 Tipps für automatisches Grid
- Bevorzugen Sie
auto-fit: Für die meisten responsiven Layouts - Immer
minmax()verwenden:minmax(250px, 1fr)ist die magische Kombination - Testen Sie verschiedene Bildschirmgrößen: Was auf Desktop gut aussieht, muss auf Mobile funktionieren
- Kombinieren Sie mit
gap: Für gleichmäßige Abstände - DevTools nutzen: Überprüfen Sie, wie viele Spalten automatisch erstellt werden
Viel Erfolg beim Grid-Lernen! 🚀
