2011-09-08 24 views
86

Ho appena scoperto Sass, e ne sono stato così entusiasta.Selettore selettore Sass e combinati

Tra l'altro, nel mio sito ho implementare un menu di navigazione ad albero, in stile con il selettore bambino combinato (E > F).

C'è un modo per riscrivere questo codice in una sintassi più semplice (o migliore) su Sass?

#foo > ul > li > ul > li > a { 
    color: red; 
} 

risposta

164

Senza il selettore bambino combinato si sarebbe probabilmente fare qualcosa di simile a questo:

foo { 
    bar { 
    baz { 
     color: red; 
    } 
    } 
} 

Se si desidera riprodurre la stessa sintassi con >, si potrebbe a questo:

foo { 
    > bar { 
    > baz { 
     color: red; 
    } 
    } 
} 

Compila questo:

foo > bar > baz { 
    color: red; 
} 

O in sass:

foo 
    > bar 
    > baz 
     color: red 
+1

Questo è solo andare a farlo più a lungo, non è vero ? – BoltClock

+1

Anche se questo è quello che OP vuole – arnaud576875

+1

bello, grazie. btw, come dichiarato da BoltClock, è più lungo (e in qualche modo più brutto per me). Sembra che dovrò stare con il mio vecchio stile. – frarees

14

Per questo unico insieme di norme che hai, non c'è alcun modo più breve per farlo. Il combinatore di bambini è lo stesso in CSS e in Sass/SCSS e non c'è alternativa ad esso.

Tuttavia, se si ha più regole come questo:

#foo > ul > li > ul > li > a:nth-child(3n+1) { 
    color: red; 
} 

#foo > ul > li > ul > li > a:nth-child(3n+2) { 
    color: green; 
} 

#foo > ul > li > ul > li > a:nth-child(3n+3) { 
    color: blue; 
} 

Si potrebbe condensare loro a uno dei seguenti:

/* Sass */ 
#foo > ul > li > ul > li 
    > a:nth-child(3n+1) 
     color: red 
    > a:nth-child(3n+2) 
     color: green 
    > a:nth-child(3n+3) 
     color: blue 

/* SCSS */ 
#foo > ul > li > ul > li { 
    > a:nth-child(3n+1) { color: red; } 
    > a:nth-child(3n+2) { color: green; } 
    > a:nth-child(3n+3) { color: blue; } 
} 
+0

Quindi non c'è alcuna trasformazione per il selettore figlio combinato ... forse qualche alternativa ad esso? – frarees

Problemi correlati