CSS Flexbox

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

  • Inhalte lassen sich zentrieren – sowohl horizontal als auch vertikal – sehr einfach.
  • Ideal für dynamische Layouts, die sich flexibel anpassen sollen.
  • Du kannst mit wenig Code ein Zeilen- oder Spaltenlayout umsetzen.
  • Kein "float"-Gefrickel mehr nötig wie früher.
  • Wann verwendet man Flexbox?

  • Wenn du z. B. zwei Spalten nebeneinander setzen willst.
  • Wenn du etwas horizontal oder vertikal zentrieren möchtest.
  • Für Layouts, die sich automatisch an verschiedene Bildschirmgrößen anpassen sollen (z. B. mobil & Desktop).
  • Wenn du Elemente gleichmäßig verteilen willst, auch mit Abständen dazwischen.
  • 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>
    Beispiel bc008