SASS `@at-root`
Denne artikkelen forklarer SASS’ @at-root.
Vi går gjennom alt fra grunnleggende bruk av @at-root til avanserte eksempler, trinn for trinn.
YouTube Video
Om SASS @at-root
@at-root er et direktiv fra SASS som brukes til å flytte nøstede selektorer eller egenskaper fra gjeldende nøsting til det overordnede scope-et. Ved å utnytte denne funksjonen kan du kontrollere nøstedybden og generere ønsket CSS mer effektivt.
Grunnleggende bruk av @at-root
SASS’ nøsting gjør koden mer lesbar, men for dyp nøsting kan føre til at utilsiktet CSS genereres. Ved å bruke @at-root kan du ta ut bestemte kodeblokker fra nøstestrukturen.
Grunnleggende Syntax
1@at-root {
2 // Code to be output at the parent (root) scope
3}Eksempel på bruk
1.nav {
2 color: blue;
3 @at-root {
4 .nav-item {
5 color: red;
6 }
7 }
8}Kompilert CSS
1.nav {
2 color: blue;
3}
4.nav-item {
5 color: red;
6}- På grunn av
@at-rootblir.nav-itemskrevet ut utenfor.nav.
@at-root i nøstede selektorer
Selv ved dyp nøsting lar @at-root deg flytte bestemte selektorer til rotnivå. Dette gjør at du kan skrive ut kontrollert CSS selv i komplekse strukturer.
Eksempel på bruk
1.card {
2 background: white;
3 .card-header {
4 color: black;
5 @at-root .card-title {
6 font-size: 20px;
7 }
8 }
9}Kompilert CSS
1.card {
2 background: white;
3}
4.card .card-header {
5 color: black;
6}
7.card-title {
8 font-size: 20px;
9}- Ved å bruke
@at-rootblir.card-titleskrevet ut utenfor.card-header.
@at-root med argumenter
Ved å angi argumenter kan @at-root styres mer fleksibelt.
argumentet without
Når du bruker argumentet without, ignorerer utdataene de angitte scope-ene. Med andre ord kan du fjerne overordnede regler eller mediespørringer.
Eksempel på bruk
1.nav {
2 @media (min-width: 768px) {
3 &__item {
4 @at-root (without: media) {
5 color: red;
6 }
7 }
8 }
9}Kompilert CSS
1.nav__item {
2 color: red;
3}- I dette tilfellet ekskluderer
@at-root (without: media)scope-et for mediespørringer, og.nav__itemskrives ut på rotnivå.
argumentet with
Ved å bruke with beholdes bare de angitte scope-ene i utdataene. Nyttig når du vil skrive ut på rotnivå samtidig som du bevarer bestemte scope.
Eksempel på bruk
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}Kompilert CSS
1@media (min-width: 768px) {
2 .nav__item-large {
3 font-size: 18px;
4 }
5}@at-root (with: media)flytter selektoren til rotnivå samtidig som mediespørringsstrukturen bevares.
Angi flere betingelser
Du kan også spesifisere flere scopes samtidig, atskilt med mellomrom.
Eksempel på bruk
1.wrapper {
2 @media (min-width: 600px) {
3 @at-root (without: rule media) {
4 .global-style {
5 color: green;
6 }
7 }
8 }
9}Kompilert CSS
1.global-style {
2 color: green;
3}- I dette eksemplet er både
rule(vanlige selektorer) ogmedia(mediespørringer) ekskludert, så.global-styletilhører ikke noe scope og skrives helt ut på rotnivå. Dette er nyttig når du bevisst vil definere globale stiler selv innenfor kompleks nøsting.
Kombinere med mediespørringer
Ved å bruke @at-root kan du generere stilregler på rotnivå fra inne i mediespørringer. Dette lar deg definere responsivt design på komponentnivå.
Eksempel på bruk
1.container {
2 @media (min-width: 768px) {
3 @at-root {
4 .container-large {
5 width: 80%;
6 }
7 }
8 }
9}Kompilert CSS
1.container-large {
2 width: 80%;
3}- Med
@at-rootkan du også skrive ut stiler på rotnivå fra innenfor mediespørringer. Dette gjør det enkelt å definere uavhengige globale stiler for hvert breakpoint.
Brukstilfeller for @at-root
@at-root er praktisk når du vil skrive ut stiler på rotnivå under bestemte betingelser. Det er spesielt nyttig når du håndterer mediespørringer eller temaspesifikke stiler i komponenter.
Skille komponenter og temaer
Ved å bruke @at-root kan du generere uavhengige globale klasser selv innenfor mediespørringer. Dette gjør det enklere å organisere temaer og tilstander per komponent.
Eksempel på bruk
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}Kompilert 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 eksempelet, mens du definerer stiler for det mørke temaet inne i
.card, genererer@at-rooten egen.card-dark-klasse. Dette gjør at du kan bytte klasser fleksibelt på tvers av ulike temaer.
Notater
Når du bruker @at-root, bør du huske følgende.
-
Unngå overdreven bruk
@at-rooter kraftig, men overdreven bruk kan gjøre hensikten med nøstingen uklar. -
Gjør hensikten tydelig Å legge igjen kommentarer om hvorfor du bruker
@at-rootgjør det enklere for andre utviklere å forstå. -
Vær oppmerksom på konsistens i scope Å flytte utdata til rotnivå kan endre avhengigheter mellom stiler. Vær tydelig på hvilke elementer det gjelder for.
-
Kombiner med andre SASS-funksjoner Å kombinere
@at-rootmed@mixinog@functionmuliggjør mer fleksibel CSS-design.
Sammendrag
{^ i18n_speak
@at-rootは、SASSのネスト構文を補完する強力なツールです。不要なネストを解消し、構造を整理することで、より明確で再利用性の高いCSSを生成できます。スコープの理解を深め、目的に応じて使い分けることで、プロジェクト全体の可読性と保守性を高めることができます。^}
Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.