Ich beschäftige mich gerade genauer mit dem CSS3-Gridlayout.
Dort kann man Elemente über vier Eigenschaften ausrichten: align-content, justify-content, align-items und justify-items. Um mir besser zu merken, was genau wie wirkt, habe ich mir einen kleinen Spickzettel gebastelt.
Natürlich ist das CSS3-Gridlayout-Modul für komplexe Layoutaufteilungen gedacht, aber manchmal braucht man ja auch banale Dinge – wie beispielsweise eine horizontale und vertikale Zentrierung.
Bei Gridlayout stehen für die Zentrierung die Angaben align-content, justify-content sowie align-items und justify-items zur Auswahl. Was aber ist genau der Unterschied zwischen diesen Angaben? Und wie zentriert man jetzt am besten beim Einsatz vom CSS3-Gridlayout?
Die Kurzschreibweise `flex` bestimmt die flexiblen Ausmaße von Flexboxen und ist eine verkürzte Schreibweise für drei Angaben. Soweit so klar. Was aber weniger bekannt ist: Wenn man bei `flex` die Angabe für `flew-grow` oder `flex-basis` weglässt, werden andere Werte genommen als die Ausgangswerte der beiden Eigenschaften. Das ist ungewöhnlich. Aber noch mal ganz von vorne.
Bei Flexbox passen sich die Elemente aneinander an - aber was ist, wenn Elemente temporär ausgeblendet werden ... und die umgebenden Elemente sich trotzdem daran anpassen sollen?
Bei der Verwendung von Flexbox gibt es bekanntlicherweise zwei Arten, Elemente zu zentrieren. Man kann `margin` beim zu zentrierenden Element einsetzen oder mit `justify-content/align-items` hantieren.
Bisher dachte ich, dass beide sich nur in der Browserunterstützung unterscheiden, aber es gibt einen anderen wesentlichen Unterschied zwischen beiden - der sich zeigt, wenn der Viewport kleiner ist als das zu zentrierende Element.
Zur Aktivierung der Flexbox-Darstellung nimmt man `display: flex` oder `display: inline-flex`. Was von beiden man wählt, hat keine Auswirkung auf die Darstellung des Flexitems, sondern darauf, wie sich der Flexcontainer zu den umgebenden Elementen verhält. Mit `display: flex` verhält sich der Flexcontainer im Wesentlichen wie ein Blockelement, hingegen mit `display:inline-flex` eher wie ein Inline-Element.
Manchmal möchte man die Reihenfolge bei der Anzeige von Elementen abändern. Dafür gibt es mehrere Möglichkeiten – und ganz raffiniert fand ich, dass man dafür auch `transform` nutzen kann.
transform ist praktisch, wenn man die Reihenfolge der Elemente exakt umkehren möchte, so dass das Element, das im Quellcode zuletzt steht, am Anfang angezeigt wird etc.