Come suggerisce il nome, ti permette di costruire un'espressione aritmetica usando la variabile oltre ai numeri costanti. È possibile eseguire addizioni ( ), sottrazioni ( ) e moltiplicazioni di coefficienti ( dove è un numero intero, inclusi numeri positivi, numeri negativi e zero).:nth-child()
n
+
-
an
a
Ecco come riscrivere l'elenco di selettori sopra:
div:nth-child(4n)
Per una spiegazione sul funzionamento di queste espressioni aritmetiche, vedere la mia risposta a questa domanda , nonché le specifiche .
Si noti che questa risposta presuppone che tutti gli elementi figlio all'interno dello stesso elemento genitore sono dello stesso tipo di elemento, div
. Se hai altri elementi di tipi diversi come h1
o p
, dovrai utilizzare :nth-of-type()
invece di :nth-child()
assicurarti di contare solo gli div
elementi:
<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>
Per tutto il resto (classi, attributi o qualsiasi combinazione di questi), dove stai cercando l'ennesimo figlio che corrisponde a un selettore arbitrario, non sarai in grado di farlo con un selettore CSS puro. Vedi la mia risposta a questa domanda .
A proposito, non c'è molta differenza tra 4n e 4n + 4 per quanto riguarda :nth-child()
. Se usi la n
variabile, inizia a contare da 0. Ecco cosa corrisponde a ciascun selettore:
: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
...
Come puoi vedere, entrambi i selettori corrisponderanno agli stessi elementi di cui sopra. In questo caso, non c'è differenza.