====== CSS Layout mit Flexbox ====== Diese Dokumentation erläutert die Grundlagen, Ausrichtungen und Eigenschaften des CSS Flexbox-Layoutmodus basierend auf dem Referenzmaterial[cite: 11]. ===== 1. Über Flexbox & Behälter ===== Flexbox ist ein Anzeigemodus, der Elemente entlang einer Achse (horizontal oder vertikal) anordnet[cite: 11]. Er eignet sich besonders für Komponenten wie Menüs, Galerien und responsive Seitenlayouts[cite: 11]. ==== Aktivierung ==== Um den Flexbox-Modus zu aktivieren, wird die Eigenschaft ''display: flex;'' auf das Eltern-Element angewendet[cite: 11]. * Der Eltern-Container wird zum **Flex-Container**[cite: 11]. * Alle direkten untergeordneten Elemente werden zu **Flex-Elementen** (Flex Items)[cite: 11]. .container { display: flex; } ===== 2. Flussrichtung & Umbruch ===== ==== flex-direction ==== Bestimmt die Hauptrichtung, in der die Flex-Elemente angeordnet werden[cite: 11]: * ''row'' — Horizontal von links nach rechts (Standard)[cite: 11]. * ''row-reverse'' — Horizontal von rechts nach links[cite: 11]. * ''column'' — Vertikal von oben nach unten[cite: 11]. * ''column-reverse'' — Vertikal von unten nach oben[cite: 11]. ==== flex-wrap ==== Steuert, ob Elemente bei Platzmangel in neue Zeilen umbrechen[cite: 11]: * ''nowrap'' — Alle Elemente bleiben auf einer Zeile (Standard; kann zu Stauchung oder Überlauf führen)[cite: 11]. * ''wrap'' — Elemente brechen bei Bedarf auf mehrere Zeilen um[cite: 11]. * ''wrap-reverse'' — Elemente brechen in umgekehrter Richtung um[cite: 11]. ==== flex-flow ==== Kurzschreibweise für ''flex-direction'' und ''flex-wrap'' in einer Deklaration[cite: 11]. .container { display: flex; flex-flow: column wrap; /* Spaltenanordnung mit Umbruch */ } ===== 3. Achsen-Konzept ===== Flexbox arbeitet richtungsunabhängig mit zwei Achsen[cite: 11]: * **Hauptachse (Main Axis):** Verläuft entlang der eingestellten Strömungsrichtung (bei ''row'' horizontal, bei ''column'' vertikal)[cite: 11]. * **Querachse (Cross Axis):** Verläuft senkrecht zur Hauptachse[cite: 11]. ===== 4. Ausrichtung ===== ==== Hauptachse: justify-content ==== Richtet die Elemente entlang der Hauptachse aus (wird auf den Container angewendet)[cite: 11]: * ''flex-start'' — Elemente werden am Anfang der Hauptachse ausgerichtet (Standard)[cite: 11]. * ''flex-end'' — Elemente werden am Ende der Hauptachse ausgerichtet[cite: 11]. * ''center'' — Zentriert die Elemente auf der Hauptachse[cite: 11]. * ''space-between'' — Gleichmäßige Verteilung; erstes Element am Anfang, letztes am Ende[cite: 11]. * ''space-around'' — Gleichmäßiger Abstand um alle Elemente herum[cite: 11]. ==== Querachse: align-items & align-self ==== * **align-items (Container):** Richtet alle Elemente entlang der Querachse aus (Werte: ''stretch'' [Standard], ''flex-start'', ''flex-end'', ''center'', ''baseline'')[cite: 11]. * **align-self (Element):** Überschreibt ''align-items'' für ein einzelnes Flex-Element[cite: 11]. ==== Mehrzeilige Querachse: align-content ==== Steuert die Ausrichtung der Zeilen auf der Querachse, wenn ''flex-wrap: wrap;'' aktiv ist und zusätzlicher Platz vorhanden ist[cite: 11] (Werte: ''stretch'' [Standard], ''flex-start'', ''flex-end'', ''center'', ''space-between'', ''space-around'')[cite: 11]. ===== 5. Flexibilität der Elemente (flex, grow, shrink, basis) ===== Die Eigenschaft ''flex'' ist eine Kurzform für ''flex-grow'', ''flex-shrink'' und ''flex-basis'' zur Verteilung des verbleibenden Raums[cite: 11]. ==== Einzelne Eigenschaften ==== * **flex-grow:** Zahl, die bestimmt, wie stark ein Element im Verhältnis zu anderen wachsen darf (0 = kein Wachstum)[cite: 11]. * **flex-shrink:** Bestimmt, wie stark ein Element bei Platzmangel schrumpfen darf[cite: 11]. * **flex-basis:** Gibt die Grundgröße des Elements vor Verteilung des Restraums an[cite: 11]. ==== Vordefinierte Kurzwerte ==== * ''flex: initial;'' (entspricht ''0 1 auto'') — Wächst nicht, kann schrumpfen[cite: 11]. * ''flex: auto;'' (entspricht ''1 1 auto'') — Vollständig flexibel[cite: 11]. * ''flex: none;'' (entspricht ''0 0 auto'') — Vollständig starr[cite: 11]. /* Beispiel für flexibles Wachstum */ .item-groß { flex: 3 1 auto; /* Erhält dreimal mehr freien Zusatzraum als Standard-Items */ } ===== 6. Reihenfolge ändern (order) ===== Die Eigenschaft ''order'' steuert die visuelle Reihenfolge von Flex-Elementen unabhängig von ihrer Reihenfolge im HTML-Quelltext[cite: 11]. * **Standardwert:** ''0''[cite: 11] * Elemente werden aufsteigend nach ihrem Wertsortiert[cite: 11]. * Elemente mit demselben Wert bilden eine Ordinalgruppe und behalten ihre Quellcode-Reihenfolge bei[cite: 11]. .box-letzte { order: 1; /* Wandert ans Ende, wenn andere den Standardwert 0 haben */ } ===== 7. Übersicht der Flexbox-Eigenschaften ===== ^ Container-Eigenschaften (Flex Container) ^ Element-Eigenschaften (Flex Items) ^ | ''display''[cite: 11] | ''flex''[cite: 11] | | ''flex-direction''[cite: 11] | ''flex-grow''[cite: 11] | | ''flex-wrap''[cite: 11] | ''flex-shrink''[cite: 11] | | ''flex-flow''[cite: 11] | ''flex-basis''[cite: 11] | | ''justify-content''[cite: 11] | ''align-self''[cite: 11] | | ''align-items''[cite: 11] | ''order''[cite: 11] | | ''align-content''[cite: 11] | |