Dies ist eine alte Version des Dokuments!


CSS Nesting

Seit 2023 unterstützen alle modernen Browser natives CSS Nesting. Sie können Regeln direkt ineinander verschachteln, was den Code lesbarer und wartbarer macht.

Ohne Nesting muss jede Regel den vollständigen Selektor wiederholen:

.card { border-radius: 1rem; }
.card img { width: 100%; }
.card:hover { outline: 2px solid gold; }
.card p { opacity: 0; }
.card p.open { opacity: 1; }

Mit Nesting schreibt man alle zusammengehörenden Regeln in einen einzigen Block:

.card {
    border-radius: 1rem;
 
    img {
        width: 100%;             /* wird zu: .card img */
    }
 
    &:hover {
        outline: 2px solid gold; /* wird zu: .card:hover */
    }
 
    p {
        opacity: 0;              /* wird zu: .card p */
 
        &.open {
            opacity: 1;          /* wird zu: .card p.sichtbar */
        }
    }
}

Das & verweist immer auf den übergeordneten Selektor. Es ist zwingend, wenn die verschachtelte Regel direkt am Elternselektor angehängt werden soll – zum Beispiel bei Pseudo-Klassen oder zusätzlichen Klassen:

Verschachtelung Kompiliert zu Wann nötig
.card { img { } } .card img Kindelement (kein & nötig)
.card { &:hover { } } .card:hover Pseudo-Klasse am Elternelement
.card { &.aktiv { } } .card.active Zusätzliche Klasse am Elternelement
p { &.offen { } } p.open Zusätzliche Klasse am Elternelement

Im Holiday-Explorer-Projekt wird Nesting verwendet, um die Beschreibung einer Kachel im geschlossenen und geöffneten Zustand zu stylen:

.text-wrapper {
    margin-top: auto;
    padding: 1.5rem;
 
    p {
        height: 0;
        opacity: 0;
        transition: all 300ms ease-in; /* wird zu: .text-wrapper p */
 
        &.open {
            height: auto;
            opacity: 1;              /* wird zu: .text-wrapper p.open */
        }
    }
}
  • de/modul/m291/learningunits/lu13/theorie/b_nesting.1780261992.txt.gz
  • Zuletzt geändert: 2026/05/31 23:13
  • von gkoch