Putting the Flexbox Albatross to Real Use

Avatar of Chris Coyier
Chris Coyier on

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

If you hadn’t seen it, Heydon posted a rather clever flexbox layout pattern that, in a sense, mimics what you could do with a container query by forcing an element to stack at a certain container width. I was particularly interested, as I was fighting a little layout situation at the time I saw this and thought it could be a solution. Let’s take a peak.

„Anzeigen-Doppel“-Einheiten

Ich habe diese kleinen Werbeeinheiten im Design dieser Seite. Ich kann sie an verschiedenen Stellen auf der Seite einfügen und tue dies auch. Manchmal sind sie in einer Spalte wie dieser

Anzeigen-Doppelerscheinungen in einer Inhaltsspalte

Manchmal platziere ich sie an einer Stelle, die eher einer Full-Width-Umgebung ähnelt

Anzeigen-Doppelerscheinungen gehen in die Breite.

Und manchmal kommen sie in ein Multi-Column-Layout, das durch ein flexibles CSS-Grid erstellt wird.

Anzeigen-Doppelerscheinungen in einem Rasterlayout, das die Spaltenanzahl nach Belieben ändert.

Sie könnten also wirklich fast jede Breite haben.

Aber es gibt einen Punkt, an dem ich möchte, dass die Anzeigen gestapelt werden. Sie funktionieren nicht mehr nebeneinander, wenn sie in einer schmalen Spalte gequetscht werden, also möchte ich, dass sie sich über/unter statt links/rechts anordnen.

Mir ist egal, wie breit der Bildschirm ist, mir ist der Platz wichtig, in den diese kommen

Ich habe angefangen, Media Queries zu schreiben, um diese Anzeigen von nebeneinander nach gestapelt zu verschieben. Ich habe es an einer Stelle „repariert“, nur um es an einer anderen kaputt zu machen, weil dieselbe Media Query in einem anderen Kontext nicht funktioniert. Ich brauchte eine verdammte Container-Abfrage!

Das ist die Schönheit von Heydons Albatros-Technik. Der Punkt, an dem ich möchte, dass sie umbrechen, ist etwa 560px, also habe ich das als Ziel genommen.

Der Übergang

Ich habe bereits Flexbox verwendet, um diese Ad Doubles zu gestalten. Daher waren die einzigen Änderungen, sie umbrechen zu lassen, die schicke 4-Eigenschaften-Albatros-Magie einzufügen und die Ränder so zu handhaben, dass keine Media Query sie zurücksetzen muss.

Das ist die gesamte diff

Screenshot of a GitHub commit showing the difference between the existing code and the new code using the albatross technique. Seven lines are highlighted in green, indication new code, and 13 lines are highlighted in red, indicating deleted code.

Und es funktioniert großartig!

Ein Blick in die Firefox DevTools

Victoria Wang schrieb kürzlich über die Gestaltung des Firefox DevTools Flexbox Inspectors. Ich musste die Firefox Developer Edition öffnen, um es mir anzusehen! Es ist ziemlich cool!

Das Coolste daran ist für mich, wie es zeigt, wie ein einzelnes Flex-Element zu seiner Render-Größe kommt. Wie wir alle wissen, kann das etwas verrückt werden, da viele Dinge es beeinflussen können, wie flex-basis, flex-grow, flex-shrink, max-width, min-width usw.

Hier ist, was die Albatros-Technik zeigt