2012-10-02 9 views
20

Ho una griglia di immagini in miniatura, attualmente 4 pollici per fila. Per fare in modo che allineare ho questo frammento di codice:Uso delle variabili SASS all'interno dell'n-child?

li:nth-child(5) { margin-left: 0;} 

Quello che ho cercato di fare è questo, ma sto ottenendo un errore di sintassi:

$galleryGrid: 5; 
    li:nth-child($galleryGrid) { margin-left: 0;} 

Se volessi modificare l'all'ennesima -child per usare un altro valore, come 10 (quindi posso avere 8 pollici di fila), ho pensato che avrebbe funzionato. Non è possibile o sto solo scorrettamente ?!

Grazie in anticipo per l'aiuto.

risposta

37

È necessario utilizzare l'interpolazione variabile per consentire all'nth-child di essere una variabile.

$galleryGrid: 5; 
li:nth-child(#{$galleryGrid}) { margin-left: 0;} 

Genera

li:nth-child(5){margin-left:0} 

Questa marcatura va bene se si ha il controllo assoluto sopra le immagini e il layout per garantire che gli elementi avvolgono sempre in modo tale che ogni 5 si comincia una nuova riga. Se non è possibile fornire tali garanzie, l'impostazione di margini negativi sull'elemento padre è un modo migliore per procedere.

+0

Ho provato il margine negativo ma non sono riuscito a farlo funzionare correttamente ?! Non ho un esempio dal vivo. Il frammento sopra funziona grazie, sono nuovo di Sass e non mi sono reso conto che dovevo aggiungere il #. –

+0

Non dimenticare di accettare la risposta ^^. Ecco una demo di margini negativi al lavoro (prova a ridimensionare il tuo browser!): Http://jsfiddle.net/5JZGt/ – cimmanon

+0

Grazie ancora per il tuo aiuto. –

Problemi correlati