SASS `@at-root`
Denne artikel forklarer SASS' @at-root
.
Vi gennemgår alt fra grundlæggende brug af @at-root
til avancerede eksempler, trin for trin.
YouTube Video
Om SASS @at-root
@at-root
er et direktiv leveret af SASS, som bruges til at flytte indlejrede selektorer eller egenskaber fra den aktuelle indlejring til det overordnede scope. Ved at udnytte denne funktion kan du styre indlejringsdybden og generere den tilsigtede CSS mere effektivt.
Grundlæggende brug af @at-root
SASS' indlejring gør koden mere læsbar, men for dyb indlejring kan medføre, at utilsigtet CSS bliver genereret. Ved at bruge @at-root
kan du udelukke bestemte kodeblokke fra indlejringsstrukturen.
Grundlæggende syntaks
1@at-root {
2 // Code to be output at the parent (root) scope
3}
Eksempel på brug
1.nav {
2 color: blue;
3 @at-root {
4 .nav-item {
5 color: red;
6 }
7 }
8}
Kompileret CSS
1.nav {
2 color: blue;
3}
4.nav-item {
5 color: red;
6}
- På grund af
@at-root
genereres.nav-item
uden for.nav
.
@at-root i indlejrede selektorer
Selv ved dyb indlejring lader brugen af @at-root
dig flytte bestemte selektorer til rodniveau. Dette gør det muligt at generere kontrolleret CSS selv i komplekse strukturer.
Eksempel på brug
1.card {
2 background: white;
3 .card-header {
4 color: black;
5 @at-root .card-title {
6 font-size: 20px;
7 }
8 }
9}
Kompileret CSS
1.card {
2 background: white;
3}
4.card .card-header {
5 color: black;
6}
7.card-title {
8 font-size: 20px;
9}
- Ved at bruge
@at-root
genereres.card-title
uden for.card-header
.
@at-root med argumenter
Ved at angive argumenter kan @at-root
styres mere fleksibelt.
without-argumentet
Når du bruger argumentet without
, ignorerer outputtet de angivne scopes. Med andre ord kan du fjerne overordnede regler eller medieforespørgsler.
Eksempel på brug
1.nav {
2 @media (min-width: 768px) {
3 &__item {
4 @at-root (without: media) {
5 color: red;
6 }
7 }
8 }
9}
Kompileret CSS
1.nav__item {
2 color: red;
3}
- I dette tilfælde udelukker
@at-root (without: media)
medieforespørgsels-scope'et, og.nav__item
genereres i roden.
with-argumentet
Ved at bruge with
bevares kun de angivne scopes i outputtet. Praktisk når du vil skrive ud til roden og samtidig bevare bestemte scopes.
Eksempel på brug
1.nav {
2 &__item {
3 @media (min-width: 768px) {
4 @at-root (with: media) {
5 &-large {
6 font-size: 18px;
7 }
8 }
9 }
10 }
11}
Kompileret CSS
1@media (min-width: 768px) {
2 .nav__item-large {
3 font-size: 18px;
4 }
5}
@at-root (with: media)
flytter selektoren til roden, samtidig med at medieforespørgselsstrukturen bevares.
Angivelse af flere betingelser
Du kan også angive flere scopes på én gang, adskilt med mellemrum.
Eksempel på brug
1.wrapper {
2 @media (min-width: 600px) {
3 @at-root (without: rule media) {
4 .global-style {
5 color: green;
6 }
7 }
8 }
9}
Kompileret CSS
1.global-style {
2 color: green;
3}
- I dette eksempel udelukkes både
rule
(almindelige selektorer) ogmedia
(medieforespørgsler), så.global-style
ikke hører til noget scope og genereres helt på rodniveau. Dette er nyttigt, når du bevidst vil definere globale stilarter selv i kompleks indlejring.
Kombination med medieforespørgsler
Ved at bruge @at-root
kan du generere stilarter på rodniveau indefra medieforespørgsler. Dette lader dig definere responsivt design på komponentniveau.
Eksempel på brug
1.container {
2 @media (min-width: 768px) {
3 @at-root {
4 .container-large {
5 width: 80%;
6 }
7 }
8 }
9}
Kompileret CSS
1.container-large {
2 width: 80%;
3}
- Ved at bruge
@at-root
kan du også generere stilarter på rodniveau indefra medieforespørgsler. Det gør det let at definere uafhængige globale stilarter for hvert breakpoint.
Anvendelsesområder for @at-root
@at-root
er praktisk, når du vil generere stilarter på rodniveau under bestemte betingelser. Det er især nyttigt, når du håndterer medieforespørgsler eller temaspecifikke stilarter inden i komponenter.
Adskillelse af komponenter og temaer
Ved at bruge @at-root
kan du generere uafhængige globale klasser selv inde i medieforespørgsler. Dette gør det lettere at organisere temaer og tilstande pr. komponent.
Eksempel på brug
1.card {
2 background: white;
3 color: black;
4
5 @media (prefers-color-scheme: dark) {
6 @at-root (with: media) {
7 .card-dark {
8 background: #222;
9 color: white;
10 }
11 }
12 }
13}
Kompileret CSS
1.card {
2 background: white;
3 color: black;
4}
5
6@media (prefers-color-scheme: dark) {
7 .card-dark {
8 background: #222;
9 color: white;
10 }
11}
- I dette eksempel, mens du definerer stilarter for det mørke tema inde i
.card
, genererer@at-root
en separat.card-dark
-klasse. Dette gør det muligt at skifte klasser fleksibelt på tværs af forskellige temaer.
Noter
Når du bruger @at-root
, skal du være opmærksom på følgende.
-
Undgå overdreven brug
@at-root
er kraftfuldt, men overforbrug kan udviske hensigten med din indlejring. -
Tydeliggør hensigten At efterlade kommentarer om, hvorfor du bruger
@at-root
, gør det lettere for andre udviklere at forstå. -
Vær opmærksom på konsistensen i dine scopes At flytte output til roden kan ændre afhængigheder mellem stilarter. Vær tydelig omkring, hvilke elementer det gælder for.
-
Kombinér med andre SASS-funktioner Kombination af
@at-root
med@mixin
og@function
muliggør et mere fleksibelt CSS-design.
Sammendrag
{^ i18n_speak
@at-root
は、SASSのネスト構文を補完する強力なツールです。不要なネストを解消し、構造を整理することで、より明確で再利用性の高いCSSを生成できます。スコープの理解を深め、目的に応じて使い分けることで、プロジェクト全体の可読性と保守性を高めることができます。^}
Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.