Skip to content

Kapitel 11: Automatisches Grid (auto-fill & auto-fit)

🎯 Lernziele

In diesem Kapitel lernen Sie:

  • auto-fill und auto-fit verstehen
  • ✅ 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

  1. ✅ Erstellt so viele 200px Spalten wie in den Container passen
  2. ✅ Auch leere Spalten werden erstellt
  3. ✅ 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

EigenschaftVerhalten bei wenig Inhalt
auto-fillLeere Spalten bleiben erhalten
auto-fitLeere 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?

  1. ✅ Jede Spalte ist mindestens 250px breit
  2. ✅ Wenn genug Platz ist, dehnen sich Spalten auf 1fr (gleicher Anteil)
  3. ✅ Wenn 250px nicht mehr passen, bricht es in neue Zeile
  4. 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

Szenarioauto-fillauto-fit
Viele ElementeIdentischIdentisch
Wenig Elemente (breiter Container)Leere Spalten sichtbarLeere Spalten verschwinden
Responsives VerhaltenKann "Lücken" hinterlassenPasst sich besser an
EmpfehlungWenn Sie feste Spaltenanzahl wollenFü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:

  1. Desktop (> 1200px): 3-4 Spalten
  2. Tablet (768px - 1024px): 2 Spalten
  3. Mobile (< 768px): 1 Spalte
  4. 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-fill vs. auto-fit Verwechslung
  • minmax() 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

  1. Bevorzugen Sie auto-fit: Für die meisten responsiven Layouts
  2. Immer minmax() verwenden: minmax(250px, 1fr) ist die magische Kombination
  3. Testen Sie verschiedene Bildschirmgrößen: Was auf Desktop gut aussieht, muss auf Mobile funktionieren
  4. Kombinieren Sie mit gap: Für gleichmäßige Abstände
  5. DevTools nutzen: Überprüfen Sie, wie viele Spalten automatisch erstellt werden

Viel Erfolg beim Grid-Lernen! 🚀

Frei für alle Anfänger