CSS flex-direction column
Auch wenn display:flex meist zum horizontalen Ausrichten von Blöcken verwendet wird: flex-direction: column richtet gleich hohe Blöcke ein. Auch wenn HTML-Blöcke wie <div> ohnehin spaltenweise angeordnet sind: mittels flex-direction: column lässt sich die Darstellung besser steuern.
Vertikale Blöcke verteilen
Spalten gleicher Höhe waren bis zum Auftritt von display: flex ein Universum voller Schwarzer Löcher. flex-direction: column verteilt den verfügbaren Platz auch unter den Blöcken einer Spalte.
.flex-vert { display: flex; min-height: 24em; justify-content: center; flex-direction: column; } .flex-item { width: 280px; margin-left: auto; margin-right: auto; }
flex-basis ist die anfängliche Breite der Flex-Items und verteilt den freien Platz unter den flex-Elementen. Ohne flex-basis nehmen die Element nur den Platz ein, den sie brauchen.
flex-basis (Kurzschrift flex) kann ein absoluter Wert wie 60px oder 2em oder ein Anteil wie 1 oder 25% sein.
flex-column: Blöcke gleicher Höhe in Spalten
Ohne Zwiebelschichten von Wrappern bringt flex-direction: column zusammen mit flex-basis Blöcke in Spalten auf gleiche Höhe. Der Inhalt bleibt in linearer Folge.


.card { display: flex; flex-direction: column; } .card header { flex-basis: 5em;} .card .wafer { display: flex; flex-basis: 3em; align-items: center; justify-content: center; } .card .cardtext { flex-basis: auto; } .card .cardimg img { width:100%; height: 80px; object-fit:cover; }
Methode | Wann verwenden? |
---|---|
flex: 1 | Gleiche Verteilung innerhalb festen Containers |
height oder min-height | Wenn du absolute oder Mindesthöhe willst |
align-items: stretch | Querrichtung gleichmäßig (Standardverhalten) |
display: grid + auto-rows | Wenn du gleich hohe Zeilen ohne Flex willst |
Da flex-basis jeweils individuell betrachtet und eingerichtet werden muss, ist die Lösung nicht wirklich flexibel. Die jüngere CSS-Eigenschaft display: contents ist zielführender.
Am Ende ist display: grid meist einfacher, wenn alle Elemente eines Spaltenblocks unabhängig vom Inhalt immer gleich hoch sein sollen:.container { display: grid; grid-auto-rows: 1fr; /* jede Zeile gleich hoch */ }
object-fit für img-Elements passt Bilder an den verfügbaren Platz an und ist das Sahnehäubchen (nicht IE11).
Alternative: Flex Auto Margins
margin:auto richtet Flex-Elemente aus.
.itemleft { margin-right: auto; background-color: cornflowerblue; } .itemright { margin-left: auto; background-color: cornflowerblue; }
.itemtop { margin-bottom: auto; } .itembottom { margin-top: auto; }
.auto .itemcenter { margin: auto; }