Native CSS-nesting
Skriv nestede CSS-regler uden en preprocessor ved hjælp af specifikationen for native CSS-nesting.
Native CSS-nesting er en gratis CSS Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i CSS Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. CSS Academy-kurset indeholder 4 lektioner i alt.
Hvad er CSS-indlejring?
Indbygget CSS-indlejring (basisunderstøttelse fra 2024 i alle moderne browsere) gør det muligt at skrive CSS-regler inde i andre regler, med en syntaks, der minder om den indlejring, som tidligere kun var tilgængelig i Sass- og Less-forprocessorer. Indlejrede regler arver automatisk den overordnede vælgers kontekst.
Grundlæggende indlejringssyntaks
Skriv underordnede vælgere inde i blokken for en overordnet regel. Browseren kombinerer automatisk de overordnede og underordnede vælgere. Et & (indlejringsvælger) henviser eksplicit til den overordnede vælger for modifikatorer og pseudoklasser.
<div class="card is-active">
<div class="title">Nested Card Title</div>
<p>Card body text.</p>
</div>
Indlejringsvælgeren &
& repræsenterer eksplicit den overordnede vælger i indlejrede regler. Brug den til pseudoklasser (&:hover), pseudoelementer (&::before), modifikatorklasser (&.active) og attributvælgere (&[disabled]). Uden & opretter indlejrede regler efterkommervælgere.
Indlejring af pseudoelementer
Indlejr regler for pseudoelementer naturligt inde i det overordnede element: .button { &::before { content: ""; } &::after { content: ""; } }. Det samler alle knapstilarter på ét sted og undgår gentagelse af vælgere, som er nødvendig i flad CSS.
Indlejring af at-regler
Medieforespørgsler og andre at-regler kan indlejres i regler (Chrome 112+, Firefox 117+): .card { padding: 1rem; @media (min-width: 768px) { padding: 2rem; } }. Responsive stilarter ligger sammen med det element, de påvirker, i stedet for i en separat medieforespørgselsblok til sidst i filen.
Vælgerspecificitet
Indlejring ændrer ikke reglerne for specificitet — den kombinerede vælger har samme specificitet, som hvis den var skrevet fladt. .card .title har samme specificitet, uanset om den er skrevet indlejret eller fladt (0,2,0). Indlejring er en syntaksmæssig bekvemmelighed, ikke en ændring af specificiteten.
Implicit efterkommer kontra eksplicit &
En indlejret vælger uden & opretter en efterkommervælger: .card { .title {} } oversættes til .card .title. Med &: .card { &.active {} } oversættes til .card.active (intet mellemrum — en modifikatorklasse, ikke en efterkommer).
BEM med indbygget indlejring
Indbygget indlejring er ikke ideel til BEM — vælgerne .block__element og .block--modifier er strenge, og indlejring kan ikke konstruere dem alene med &. Brug indlejring til pseudoklasser og indlejrede komponentstrukturer i stedet for sammenkædning af BEM-strenge (det kræver stadig en forprocessor).
Overgang fra Sass
Det meste af Sass' indlejringssyntaks er identisk med indbygget CSS-indlejring. Undtagelsen er, at Sass tillader sammenkædning af strenge med &-modifier (det gør indbygget CSS ikke). Overgangen sker ved at lede efter mønstre med &- eller &__ og udfolde netop disse regler, mens den øvrige indlejring bevares.
Browserunderstøttelse
Indbygget CSS-indlejring understøttes i Chrome 112+, Firefox 117+ og Safari 16.5+. Til ældre browsere kan du bruge PostCSS med postcss-nesting til at omdanne indbygget indlejringssyntaks til flad CSS under bygningen — så du kan skrive med indbygget indlejring allerede i dag.
DevTools og indlejring
Chrome DevTools viser indlejrede regler i deres indlejrede form i panelet Styles. Når du klikker på en indlejret regel, springer du til den korrekte kildeplacering i panelet Sources. Fejlfinding af indlejret CSS er lige så tydelig som fejlfinding af flad CSS i moderne DevTools.
Videnstjek
Hvad er forskellen på indlejring med og uden vælgeren &?
Opsummering
Indbygget CSS-indlejring gør Sass-lignende indlejringssyntaks mulig i almindelig CSS. Vælgeren & opretter sammensatte vælgere til pseudoklasser, pseudoelementer og modifikatorer. Indlejrede @media-forespørgsler placerer responsive stilarter sammen med de elementer, de påvirker. PostCSS omdanner indbygget indlejring til ældre browsere, så du gradvist kan tage teknologien i brug allerede i dag.
Lær CSS med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 40
- Lektioner
- 159
Ofte stillede spørgsmål
Er lektionen “Native CSS-nesting” gratis?
Ja — hele teksten til “Native CSS-nesting” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af CSS Academy-kurset, skal du opgradere til CoddyKit PRO. CSS Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Native CSS-nesting”?
Skriv nestede CSS-regler uden en preprocessor ved hjælp af specifikationen for native CSS-nesting. Du øver dig i CSS Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på CSS Academy?
Der kræves ingen tidligere erfaring. CSS Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Native CSS-nesting”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne CSS Academy-lektion?
Ja. Alle CSS Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Native CSS-nesting
- :has() relationel pseudo-class
- @scope til afgrænsede typografier
- View Transitions API