Combinatori nel nesting

Combinatori nel nesting

Questo articolo spiega i combinatori nel nesting.

Spiegheremo come utilizzare i combinatori nel nesting con SASS e forniremo esempi di codice per aiutarti a comprendere passo dopo passo.

YouTube Video

Combinatori nel nesting

In SASS, puoi scrivere i selettori CSS in modo conciso basandoti su relazioni genitore-figlio, ma è necessaria particolare attenzione per gestire correttamente combinatori come i selettori discendenti e adiacenti.

Basi del nesting

In SASS, nidificando i selettori figli all'interno dei selettori genitori, puoi rappresentare in modo chiaro e conciso le relazioni genitore-figlio nel CSS.

Esempio: nested di base

1.nav {
2    ul {
3        li {
4            color: blue;
5        }
6    }
7}

CSS compilato

1.nav ul li {
2    color: blue;
3}

Riferimento al selettore genitore (&)

Il & di SASS viene utilizzato per fare riferimento al selettore genitore corrente.

Combinare i combinatori e &

Utilizzando &, è possibile creare selettori flessibili.

Esempio
1.card {
2    & > .title {
3        font-weight: bold;
4    }
5    & + .card {
6        margin-top: 20px;
7    }
8}
CSS compilato
1.card > .title {
2    font-weight: bold;
3}
4.card + .card {
5    margin-top: 20px;
6}

Notazione abbreviata per &

In SASS, quando un combinatore viene posto all'inizio di un selettore, il selettore genitore viene inserito implicitamente, quindi puoi omettere il &.

Casi in cui è possibile l'omissione

Ad esempio, quando scrivi + .item, SASS lo interpreta internamente come & + .item e genera automaticamente la combinazione con il selettore genitore.

Esempio
1.item {
2    + .item {
3        margin-top: 10px;
4    }
5    &--hover {
6        background-color: red;
7    }
8}
CSS compilato
1.item + .item {
2  margin-top: 10px;
3}
4.item--hover {
5  background-color: red;
6}

Panoramica dei combinatori

I combinatori CSS definiscono la relazione tra i selettori. I seguenti sono i principali tipi di combinatori.

  1. Selettore discendente (spazio) Un selettore discendente prende di mira tutti gli elementi discendenti contenuti all'interno di un elemento genitore. Esempio: .parent .child

  2. Selettore figlio (>) Un selettore figlio prende di mira solo gli elementi figli immediati. Esempio: .parent > .child

  3. Selettore adiacente (+) Un selettore adiacente prende di mira l'elemento fratello immediatamente successivo e adiacente. Esempio: .sibling1 + .sibling2

  4. Selettore generale dei fratelli (~) Il selettore generale dei fratelli prende di mira tutti gli elementi fratelli successivi. Esempio: .sibling1 ~ .sibling2

Come usare i combinatori in SASS

Selettore discendente (spazio)

Nel nesting SASS, il selettore discendente (spazio) viene applicato di default.

Esempio
1.container {
2    .header {
3        .title {
4            font-size: 20px;
5        }
6    }
7}
CSS compilato
1.container .header .title {
2    font-size: 20px;
3}

Selettore figlio (>)

Se vuoi utilizzare un selettore figlio, scrivi esplicitamente > nel tuo codice SASS.

Esempio
1.container {
2    & > .header {
3        & > .title {
4            font-size: 20px;
5        }
6    }
7}
CSS compilato
1.container > .header > .title {
2    font-size: 20px;
3}

Selettore adiacente (+)

Per stilizzare l'elemento fratello immediatamente successivo, usa +.

Esempio
1.item {
2    & + .item {
3        margin-top: 10px;
4    }
5}
CSS compilato
1.item + .item {
2    margin-top: 10px;
3}

Selettore generale dei fratelli (~)

Per stilizzare tutti i fratelli successivi allo stesso livello, usa ~.

Esempio
1.alert {
2    & ~ .alert {
3        border-top: 1px solid red;
4    }
5}
CSS compilato
1.alert ~ .alert {
2    border-top: 1px solid red;
3}

Pseudo-classi e pseudo-elementi con il nesting

Anche le pseudo-classi e gli pseudo-elementi possono essere facilmente scritti in SASS.

Esempio
1.button {
2    &:hover {
3        background-color: blue;
4    }
5    &::after {
6        content: '';
7        display: block;
8    }
9}
CSS compilato
1.button:hover {
2    background-color: blue;
3}
4.button::after {
5    content: '';
6    display: block;
7}

Esempio pratico

Di seguito è riportato un esempio di uno stile complesso che combina più combinatori.

Codice SASS
 1.menu {
 2    .menu-item {
 3        & > .submenu {
 4            display: none;
 5
 6            & > .submenu-item {
 7                font-size: 14px;
 8            }
 9        }
10        & + .menu-item {
11            margin-left: 15px;
12        }
13    }
14}
CSS compilato
1.menu .menu-item > .submenu {
2    display: none;
3}
4.menu .menu-item > .submenu > .submenu-item {
5    font-size: 14px;
6}
7.menu .menu-item + .menu-item {
8    margin-left: 15px;
9}

Riepilogo

Se comprendi correttamente nesting e combinatori in SASS, puoi scrivere CSS più concisi e leggibili.

Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.

YouTube Video