2011-05-25 10 views
11

¿Es posible usar el nth-child con módulo? Sé que puede especificar una fórmula, comonth-child con mod (o módulo) operador

nth-child(4n+2) 

Pero me parece que no puede encontrar si hay un operador de módulo. He probado los siguientes ejemplos a continuación, y ninguno parece funcionar:

nth-child(n%7) 
nth-child(n % 7) 
nth-child(n mod 7) 

Respuesta

18

No, :nth-child() sólo es compatible con la suma, resta y coefficient multiplication.

deduzco que está tratando de recoger los 6 primeros elementos (como n mod 7 para cualquier entero positivo n sólo le da a 06). Para ello, puede utilizar esta fórmula en lugar:

:nth-child(-n+6) 

Al negar n, conteo elemento se realiza regresiva a partir de cero, por lo que serán seleccionados los siguientes elementos:

0 + 6 = 6 
-1 + 6 = 5 
-2 + 6 = 4 
-3 + 6 = 3 
-4 + 6 = 2 
-5 + 6 = 1 
... 

jsFiddle demo

+0

estás cerca, [nth-child utiliza un índice basado '1'] (http://www.w3.org/TR/css3-selectors/# nth-child-pseudo), no '0'. Quieres '-n + 7'. – zzzzBov

+5

@zzzzBov: No, indexa 'n' desde cero. "La notación pseudoclase': nth-child (an + b) 'representa un elemento que tiene' an' + 'b'-1 hermanos ** antes de ** it en el árbol de documentos, para cualquier entero positivo o valor cero of 'n'" Solo indica que el primer hijo tiene un índice de 1, que no está relacionado con la indexación de 'n'. – BoltClock

+1

Estoy parado. Buena atrapada; Recordé que los elementos eran un índice basado en 1 y asumí que el índice n era el mismo sin volver a leer los documentos. – zzzzBov

12

Si desea utilizar nth-child con el módulo k, solo especifique:

nth-child(kn) 

Por ejemplo, si desea especificar el estilo de 3, 6, 9, .. elementos, basta con especificar (k = 3), y el uso:

nth-child(3n) 

También puede especificar un desplazamiento:

nth-child(kn+offset) 
+0

Creo que se debe aceptar la respuesta. Es la respuesta segura para mi pregunta. ¡Gracias! Aprendí una lección aquí. – Ben

6

sé que este tema es muy antiguo, pero aquí está la respuesta que está lo suficientemente cerca de módulo operador:

:not(:nth-child(7n)) 

Esto seleccionará los elementos 1-6, 8-13 y así sucesivamente ...

:nth-child(an) 

El código anterior seleccionará los elementos divisibles por "a" por lo que añadir: CSS no fuerzas selectores() para seleccionar elementos no divisible por "a".

espero que alguien ha resultado útil;)

+1

No había considerado que el asker podría haber querido decir 'n mod 7' para unir cualquier elemento donde n no es divisible entre 7. Esto se parece más a lo que la pregunta original me estaba pidiendo que a mi respuesta, aunque todavía tendremos que obtener la confirmación del asker. – BoltClock