Was ist die Flexbox?
Die Flexbox (kurz für Flexible Box Layout) ist ein CSS-Modell, das das Positionieren, Ausrichten und Verteilen von HTML-Elementen vereinfacht – besonders dann, wenn sich die Größe der Elemente dynamisch ändern kann (z. B. bei verschiedenen Bildschirmgrößen).
Vorteile der Flexbox
Wann verwendet man Flexbox?
Zeilen- vs. Spaltenlayout
Flexbox arbeitet entlang einer Hauptachse (main axis). Du bestimmst in welche Richtung die Elemente fließen sollen: Entwededer im Zeilenlayout: nebeneinander (horizonzal mit flex-direction: row;
, oder
im Spaltenlayout: untereinander (vertikal) mit flex-direction: column;
(Es könnte ein Gedankenfehler auftauchen, wo bei einer Tabelle eine Spalte doch horinzontal und eine Zeile doch vertikal ist, z.B. bei Excel)
Praxis: Zwei verschiedene 2-Spalten-Layouts mit Flexbox
Im folgenden Beispiel zeige ich dir zwei Container, die jeweils ein 2-Spalten-Layout enthalten. Beide verwenden Flexbox, aber mit unterschiedlicher Verteilung des Platzes.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>2-Spalten-Layout mit Flexbox</title>
<style>
.container {
display: flex;
flex-direction: row; /* Zeilenlayout: Elemente nebeneinander */
}
.spalte {
flex: 1; /* Beide Spalten bekommen gleich viel Platz */
padding: 20px;
border: 1px solid #0094ff;
background-color: #111;
color: white;
}
.spalte:first-child {
background-color: #222;
}
.weiterespalte {
padding: 20px;
border: 1px solid #0094ff;
background-color: #111;
color: black;
}
.weiterespalte:first-child {
flex: 2; /* Diese Spalte bekommt 2/3 Platz */
background-color: lightblue;
}
.weiterespalte:last-child {
flex: 1; /* Diese Spalte bekommt 1/3 Platz */
background-color: lightgreen;
}
</style>
</head>
<body>
<div class="container">
<div class="spalte">
<h2>Linke Spalte</h2>
<p>Hier steht etwas Text in der linken Spalte.</p>
</div>
<div class="spalte">
<h2>Rechte Spalte</h2>
<p>Hier steht etwas Text in der rechten Spalte.</p>
</div>
</div>
<div class="container">
<div class="weiterespalte">
<h2>Linke Spalte</h2>
<p>Hier steht etwas Text in der linken Spalte.</p>
</div>
<div class="weiterespalte">
<h2>Rechte Spalte</h2>
<p>Hier steht etwas Text in der rechten Spalte.</p>
</div>
</div>
</body>
</html>