Como o nome indica, permite construir uma expressão aritmética usando a variável, além de números constantes. Você pode executar adição ( ), subtração ( ) e multiplicação de coeficientes ( onde é um número inteiro, incluindo números positivos, números negativos e zero).:nth-child()
n
+
-
an
a
Veja como você reescreveria a lista de seletores acima:
div:nth-child(4n)
Para uma explicação sobre como essas expressões aritméticas funcionam, veja minha resposta a esta pergunta , bem como as especificações .
Observe que esta resposta supõe que todos os elementos filhos no mesmo elemento pai sejam do mesmo tipo div
. Se você tiver outros elementos de tipos diferentes, como h1
ou p
, será necessário usá-lo em :nth-of-type()
vez de :nth-child()
garantir que você conte apenas div
elementos:
<body>
<h1></h1>
<div>1</div> <div>2</div>
<div>3</div> <div>4</div>
<h2></h2>
<div>5</div> <div>6</div>
<div>7</div> <div>8</div>
<h2></h2>
<div>9</div> <div>10</div>
<div>11</div> <div>12</div>
<h2></h2>
<div>13</div> <div>14</div>
<div>15</div> <div>16</div>
</body>
Para todo o resto (classes, atributos ou qualquer combinação desses), em que você está procurando o enésimo filho que corresponde a um seletor arbitrário, não poderá fazer isso com um seletor CSS puro. Veja minha resposta a esta pergunta .
A propósito, não há muita diferença entre 4n e 4n + 4 em relação a :nth-child()
. Se você usar a n
variável, ela começará a contar em 0. Isso é o que cada seletor corresponderia:
:nth-child(4n)
4(0) = 0
4(1) = 4
4(2) = 8
4(3) = 12
4(4) = 16
...
:nth-child(4n+4)
4(0) + 4 = 0 + 4 = 4
4(1) + 4 = 4 + 4 = 8
4(2) + 4 = 8 + 4 = 12
4(3) + 4 = 12 + 4 = 16
4(4) + 4 = 16 + 4 = 20
...
Como você pode ver, os dois seletores corresponderão aos mesmos elementos acima. Nesse caso, não há diferença.