Micro-Layouts

Bei Layouts denken wir oft an Designs auf Seitenebene. Kleinere Komponenten auf der Seite können jedoch eigene eigenständige Layouts haben.

Idealerweise werden diese Layouts auf Komponentenebene automatisch angepasst, unabhängig von ihrer Position auf der Seite. Es kann Situationen geben, in denen Sie nicht wissen, ob eine Komponente in der Spalte mit dem Hauptinhalt, in der Seitenleiste oder in beiden platziert wird. Wenn Sie nicht wissen, wo eine Komponente landet, müssen Sie dafür sorgen, dass sie sich selbst an ihren Container anpassen kann.

Ein zweispaltiges Layout, einmal breit und schmal. Die Medienobjekte sind unterschiedlich angeordnet, je nachdem, ob sie sich in der breiten oder schmalen Spalte befinden.

GRid

Das CSS-Raster eignet sich nicht nur für Layouts auf Seitenebene. Sie funktioniert auch gut für die darin enthaltenen Komponenten.

In diesem Beispiel erzeugen die Pseudoelemente ::before und ::after dekorative Linien auf beiden Seiten einer Überschrift. Die Überschrift selbst ist ein Rastercontainer. Die einzelnen Elemente sind so angeordnet, dass die Linien immer den verfügbaren Platz ausfüllen.

h1 {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 1em;
}
h1::before,
h1::after {
  content: "";
  border-top: 0.1em double black;
  align-self: center;
}
Entwicklertools in Firefox mit einem Raster-Overlay Entwicklertools in Chrome mit einem Raster-Overlay
Computerbrowser wie Firefox und Chrome haben Entwicklertools, mit denen du Rasterlinien und Bereiche über dein Design einblenden kannst.

Informationen zum Prüfen von Rasterlayouts in den Chrome-Entwicklertools

Flexbox

Wie der Name schon sagt, können Sie mit der Flexbox Ihre Komponenten flexibel gestalten. Sie können festlegen, welche Elemente in Ihrer Komponente eine Mindest- oder Maximalgröße haben sollen, und die anderen Elemente entsprechend anpassen lassen.

In diesem Beispiel nimmt das Bild ein Viertel des verfügbaren Platzes und der Text die anderen drei Viertel ein. Aber das Bild wird nie größer als 200 Pixel.

.media {
  display: flex;
  align-items: center;
  gap: 1em;
}
.media-illustration {
  flex: 1;
  max-inline-size: 200px;
}
.media-content {
  flex: 3;
}
Entwicklertools in Firefox mit einem Flexbox-Overlay Entwicklertools in Chrome mit einem Flexbox-Overlay
Mit den Entwicklertools in Firefox und Chrome lässt sich die Form der Flexbox-Komponenten visualisieren.

Informationen zum Überprüfen von Flexbox-Layouts in den Chrome-Entwicklertools

Containerabfragen

Mit der Flexbox können Sie aus den Inhalten heraus ein Design entwickeln. Sie können die Parameter Ihrer Elemente angeben (wie schmal und breit sie werden sollen) und den Browser die endgültige Implementierung überlassen.

Die Komponente selbst hat jedoch kein Bewusstsein für ihren Kontext. Er weiß nicht, ob er im Hauptinhalt oder in einer Seitenleiste verwendet wird. Dadurch können Komponentenlayouts schwieriger sein als Seitenlayouts. Um kontextbezogene Stile anwenden zu können, müssen Ihre Komponenten mehr wissen als die Größe des Darstellungsbereichs, in dem sie sich befinden.

Bei Seitenlayouts wissen Sie die Breite des Containers, da der Container der Darstellungsbereich des Browsers ist. Medienabfragen geben die Abmessungen des Containers auf Seitenebene an.

Mit Containerabfragen können Sie Berichte zu den Dimensionen eines Containers erstellen.

Legen Sie zuerst fest, welche Elemente als Container dienen sollen.

main,
aside {
  container-type: inline-size;
}

Das bedeutet, dass Sie die Inline-Dimension abfragen möchten. Bei englischsprachigen Dokumenten ist das die horizontale Achse. Sie werden die Stile basierend auf der Breite des Containers ändern.

Befindet sich eine Komponente in einem dieser Container, können Sie Stile auf ähnliche Weise anwenden wie Medienabfragen.

.media-illustration {
  max-width: 200px;
  margin: auto;
}

@container (min-width: 25em) {
  .media {
    display: flex;
    align-items: center;
    gap: 1em;
  }

  .media-illustration {
    flex: 1;
  }

  .media-content {
    flex: 3;
  }
}

Wenn sich ein Medienobjekt in einem Container befindet, der schmaler als 25em ist, werden die Flexbox-Stile nicht angewendet. Bild und Text sind vertikal angeordnet.

Wenn das enthaltende Element jedoch breiter als 25em ist, werden Bild und Text nebeneinander angezeigt.

Mit Containerabfragen können Sie Komponenten unabhängig voneinander gestalten. Die Breite des Darstellungsbereichs spielt keine Rolle mehr. Sie können Regeln schreiben, die auf der Breite des beinhaltenden Elements basieren.

Zwei Container unterschiedlicher Größe.

Abfragen kombinieren

Sie können Medienabfragen für das Seitenlayout und Containerabfragen für die Komponenten der Seite verwenden.

Hier besteht die Gesamtstruktur der Seite aus einem main-Element und einem aside-Element. In beiden Elementen befinden sich Medienobjekte.

<body>
  <main>
     <div class="media">…</div>
     <div class="media">…</div>
  </main>
  <aside>
     <div class="media">…</div>
  </aside>
</body>

Bei einer Medienabfrage wird ein Rasterlayout auf die Elemente main und aside angewendet, wenn der Darstellungsbereich breiter als 45em ist.

@media (min-width: 45em) {
  body {
    display: grid;
    grid-template-columns: 3fr 1fr;
  }
}

Die Containerabfrageregel für die Medienobjekte bleibt gleich: Wenden Sie nur ein horizontales Flexbox-Layout an, wenn das enthaltende Element breiter als 25em ist.

Ein zweispaltiges Layout, einmal breit und schmal. 
Die Medienobjekte sind unterschiedlich angeordnet, je nachdem, ob sie sich in der breiten oder schmalen Spalte befinden.

Containerabfragen sind für Mikrolayouts bahnbrechend. Ihre Komponenten können unabhängig vom Darstellungsbereich des Browsers unabhängig sein.

Wissen testen

Testen Sie Ihr Wissen über Mikro-Layouts.

Raster und Flexbox sind beide nützlich für Mikrolayouts?

Wahr
🎉
Falsch
🎉 Raster und Flexbox sind beide sehr nützlich, selbst für die kleinsten Layouts.

Sie haben bereits etwas über Makro-Layouts auf Seitenebene gelernt. Jetzt kennen Sie Mikro-Layouts auf Komponentenebene. Als Nächstes sehen wir uns die Grundbausteine Ihrer Inhalte genauer an. Sie erfahren, wie Sie Ihre Bilder responsiv machen. Jetzt wollen wir uns die responsive Typografie ansehen.