Mach deine Komponenten responsiv gegenüber ihrem Container statt gegenüber dem Viewport und strukturiere deine Stylesheets mit nativem Nesting.
Diese Lektion in Kodokon öffnenMedia Queries messen den Viewport: Eine Karte, die sowohl in einer schmalen Sidebar als auch in einem Haupt-Grid angezeigt wird, kann sich mit ihnen nicht korrekt anpassen, weil dieselbe Bildschirmbreite zwei verschiedenen Kontexten entspricht. Container Queries lösen diese Entkopplung: Die Komponente fragt die Größe ihres Containers ab. Voraussetzung: Bestimme einen Container ausdrücklich mit container-type (inline-size, um nur die horizontale Achse zu messen, der häufige Fall), optional benannt über container-name.
.sidebar {
container-type: inline-size;
container-name: sidebar;
}
@container sidebar (min-width: 400px) {
.widget {
display: grid;
grid-template-columns: 80px 1fr;
gap: 12px;
}
}Container-Einheiten vervollständigen das Bild: 1cqi entspricht 1 % der Inline-Größe des abgefragten Containers (cqw, cqh, cqb, cqmin, cqmax gibt es ebenfalls). Kombiniert mit clamp() erzeugen sie flüssige Typografie pro Komponente: Dieselbe Karte erhält einen Titel, der zu ihrer Spalte passt, wo immer sie platziert wird.
.card-slot {
container-type: inline-size;
}
.card h2 {
font-size: clamp(1rem, 5cqi, 1.75rem);
}
@container (max-width: 300px) {
.card .meta {
display: none;
}
}Natives Nesting bringt endlich Verschachtelung ohne Präprozessor. Der &-Selektor verweist auf den Elternkontext; Media Queries und @container verschachteln sich direkt innerhalb einer Regel. Ein entscheidender Unterschied zu Sass: Das verschachtelte Elternelement wird so behandelt, als wäre es in :is() gehüllt. Zwei Folgen: Die Spezifität des Elternteils ist die des stärksten seiner Selektoren, wenn es eine Liste ist, und & .child führt keine String-Verkettung durch - das Sass-Muster &__element zum Erzeugen von BEM-Namen existiert nativ nicht.
.menu {
display: flex;
gap: 8px;
& > li {
list-style: none;
&:hover {
background: #f3f4f6;
}
}
@media (min-width: 768px) {
gap: 16px;
}
}5cqi?