2011-09-08 16 views
86

Acabo de descubrir a Sass, y he estado muy emocionado al respecto.Sass y selector de niños combinados

Por cierto, en mi sitio web implemento un menú de navegación similar a un árbol, diseñado con el selector infantil combinado (E > F).

¿Hay alguna manera de reescribir este código en una sintaxis más simple (o mejor) en Sass?

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

Respuesta

164

Sin el selector combinado niño es probable que hacer algo similar a esto:

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

Si desea reproducir la misma sintaxis con >, que pudo para esto:

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

Esto compila a esto:

foo > bar > baz { 
    color: red; 
} 

O en Sass:

foo 
    > bar 
    > baz 
     color: red 
+1

Esto es sólo va a hacer que sea más largo, no es ? – BoltClock

+1

Pensé que esto es lo que OP quiere – arnaud576875

+1

bien, gracias. Por cierto, como dijo BoltClock, es más largo (y de alguna manera más feo para mí). Parece que tendré que quedarme con mi viejo estilo. – frarees

14

Por esa sola regla que tiene, no hay ningún camino más corto para hacerlo. El combinador de niños es el mismo en CSS y en Sass/SCSS y no hay alternativa.

Sin embargo, si usted tenía varias reglas como esta:

#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; 
} 

Se podría condensar a uno de los siguientes:

/* 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

Así que no hay transformación para el selector combinado infantil ... ¿alguna alternativa? – frarees