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+-ana
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 h1ou p, será necessário usá-lo em :nth-of-type()vez de :nth-child()garantir que você conte apenas divelementos:
<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 nvariá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.