Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/08/2013, 11:47
Avatar de nanotime
nanotime
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 13 años
Puntos: 6
Exclamación Problema con algunos nth-child en SCSS

Bien, les muestro algo que ando haciendo y que funciona, sí, pero a medias

Estoy trabajando en unos botones para un sitio y estoy usando también las teorías de orientación a objetos en css (OOCSS) junto con scss para facilitarme en varias cosas y escribir código mas eficiente.

En fin, la cuestión es que, uno de los sets de menús requiere imágenes en los botones, y no exactamente imágenes que pueda usar como icon-font tipo font-awesome, sino directamente unos png personalizados.

La cuestión de todo esto es que trato de hacer la plantilla reutilizable y bajo el concepto DRY (don't repeat yourself), como dije, funciona a medias y este es el código scss de lo que he hecho:

Código CSS:
Ver original
  1. #nav-galleries{
  2.     img, a{
  3.         display: inline-block;
  4.     }
  5.     @for $i from 1 to 4 {
  6.         a:nth-child(#{$i}){
  7.             background-image: url("img/gallerie-icon-#{$i}.png");
  8.             background-repeat: no-repeat;
  9.             height: 52px;
  10.             width: 68;
  11.         }
  12.     }
  13.     li{
  14.         margin-top: 15px;
  15.     }
  16. }

Pueden ignorar lo demás, lo importante en ese snippet es el for, el que da tres vueltas (si declaro 3 como limite solo hace dos iteraciones) y a cada elemento "a" le pone las propiedades que ahí ven, y lo importante reside en la url de la imagen, que toma el valor de $i para cambiar el nombre de la imagen (sip, cada imagen se llama gallerie-icon-1 ...2 ... 3).

Ahora, este código compila a este css:

Código CSS:
Ver original
  1. #nav-galleries a:nth-child(1) {
  2.   background-image: url("img/gallerie-icon-1.png");
  3.   background-repeat: no-repeat;
  4.   height: 52px;
  5.   width: 68; }
  6.  
  7. #nav-galleries a:nth-child(2) {
  8.   background-image: url("img/gallerie-icon-2.png");
  9.   background-repeat: no-repeat;
  10.   height: 52px;
  11.   width: 68; }
  12.  
  13. #nav-galleries a:nth-child(3) {
  14.   background-image: url("img/gallerie-icon-3.png");
  15.   background-repeat: no-repeat;
  16.   height: 52px;
  17.   width: 68; }

Hasta ahí, todo genial en teoría debería funcionar (tampoco es que sea un script muy extraño o complejo) pero, cuando abro el navegador para ver que tal va todo, me doy cuenta de que solo está aplicando un :nth-child ... el 1, y se lo aplica a todos los botones

Una imagen vale más:



En la imagen, los botones a la izquierda son los que estoy trabajando, como verán, solo toma el valor 1 de $i por mas que se haya compilado aparentemente bien al CSS ...

He hecho varias pruebas pero se sigue aplicando a todos por igual, este es el momento de empezar a idear cosas locas y probar, así que lo que sea que se les pueda ocurrir, por mas tonto que suene, me interesa saberlo ¿Me echan una mano?

Gracias a todos por adelantado.