„Altes“ Flexbox und „Neues“ Flexbox

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Nur damit jeder das klar versteht: „Flexbox“ (genauer gesagt: CSS Flexible Box Layout Module) hat in den letzten drei Jahren viele Änderungen erfahren. Änderungen sowohl an der Spezifikation als auch an dem, was Browser implementiert haben.

Wie man es erkennt

Wenn Sie nach Flexbox googeln, werden Sie viele veraltete Informationen finden. Hier können Sie schnell erkennen

Wenn Sie sich einen Blogbeitrag (oder was auch immer) über Flexbox ansehen und `display: box;` oder eine Eigenschaft sehen, die `box-{*}` ist, sehen Sie sich die alte Version von Flexbox aus dem Jahr 2009 an.

Wenn Sie sich einen Blogbeitrag (oder was auch immer) über Flexbox ansehen und `display: flexbox;` oder die `flex()`-Funktion sehen, betrachten Sie eine unbeholfene Übergangsphase aus dem Jahr 2011.

Wenn Sie sich einen Blogbeitrag (oder was auch immer) über Flexbox ansehen und `display: flex;` und `flex-{*}`-Eigenschaften sehen, betrachten Sie die aktuelle (zum Zeitpunkt des Schreibens) Spezifikation.

Beispiele für veraltete Dinge

All das war zu seiner Zeit *fantastisch*, aber jetzt ist es veraltet

Flexie – ein JavaScript Polyfill für Flexbox, **verwendet alte Syntax aus dem Jahr 2009**.

Dieser Artikel von Richard Shepard auf Smashing Magazine aus der unbeholfenen Phase von 2011. Er erwähnt beiläufig die Syntax von 2011, konzentriert sich aber mehr auf die Syntax von 2009.

Stephen Hay schreibt schon seit geraumer Zeit über Flexbox. Sein Einführungsbeitrag verwendet die alte Syntax von 2009, dann hat er einen Nachfolgebeitrag zur Syntax von 2011 geschrieben, leider nur einen Monat, bevor die aktuelle Syntax veröffentlicht wurde.

Ich war zuerst begeistert von Flexbox durch diesen Artikel von Paul Irish, der die Syntax von 2009 verwendet. Er enthält eine Warnung am Anfang, verlinkt aber zu Stephens Artikel, der die Syntax von 2011 verwendet.

Unterstützung

Die Dinge werden in Bezug auf die Browserunterstützung etwas komplizierter.

Die alte Syntax von 2009 hat eine überraschend gute Browserunterstützung: Chrome, Firefox 2+, Safari 3.1+... Praktisch alles außer IE 9- und Opera. Ich sage „Unterstützung“, weil die tatsächlichen Implementierungen teilweise waren und leicht abwichen (daher die Überarbeitung).

Trotz mehr Unterstützung ist es nicht ratsam, die ältere Syntax zu verwenden. Die alte Spezifikation ist mit dem Wind dahingeweht. Browser könnten die Unterstützung für die alte Syntax in Zukunft einstellen. Zumindest ist es sehr wahrscheinlich, dass die neue Syntax leichter zu verstehen ist und tiefer und konsistenter implementiert wird. Browser, die Flexbox noch nicht unterstützen, werden die neue Spezifikation implementieren, die sich im Status „CR“ (Candidate Recommendation) befindet.

Die Unterstützung für die **neue Syntax** ist: Chrome 21+, Safari 6.1+, Firefox 22+, Opera (& Opera Mobile) 12.1+, IE 11+ und Blackberry 10+.

Das noch unveröffentlichte IE 10 wird wahrscheinlich mit der unbeholfenen Übergangs-Flexbox (display: flexbox;) ausgeliefert.

Demo

Ich habe kürzlich jemandem bei der Erstellung eines Fluid-Fixed-Fluid-Spaltenlayouts geholfen. Beide Syntaxen sind dazu leicht in der Lage (es ist sonst ziemlich schwierig). Sie werden gute Referenzen für den Test der Browserunterstützung (und Browser-Deprecation) sein.

Beispiel für ALTE Syntax

Beispiel für NEUE Syntax