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-root
blir.nav-item
skrevet 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-root
blir.card-title
skrevet 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__item
skrives 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-style
tilhø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-root
kan 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-root
en 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-root
er kraftig, men overdreven bruk kan gjøre hensikten med nøstingen uklar. -
Gjør hensikten tydelig Å legge igjen kommentarer om hvorfor du bruker
@at-root
gjø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-root
med@mixin
og@function
muliggjø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.