Czy można wybrać, powiedzmy, co czwarty element w zestawie elementów?
Np .: Mam 16 <div>
elementów ... Mógłbym napisać coś takiego.
div:nth-child(4),
div:nth-child(8),
div:nth-child(12),
div:nth-child(16)
czy jest na to lepszy sposób?
Czy można wybrać, powiedzmy, co czwarty element w zestawie elementów?
Np .: Mam 16 <div>
elementów ... Mógłbym napisać coś takiego.
div:nth-child(4),
div:nth-child(8),
div:nth-child(12),
div:nth-child(16)
czy jest na to lepszy sposób?
Odpowiedzi:
Jak sama nazwa wskazuje, pozwala konstruować wyrażenie arytmetyczne przy użyciu zmiennej oprócz stałych liczb. Możesz wykonywać dodawanie ( ), odejmowanie ( ) i mnożenie współczynników ( gdzie jest liczbą całkowitą, w tym liczbami dodatnimi, liczbami ujemnymi i zerem).:nth-child()
n
+
-
an
a
Oto jak przepisałbyś powyższą listę selektorów:
div:nth-child(4n)
Aby uzyskać wyjaśnienie działania tych wyrażeń arytmetycznych, zobacz moją odpowiedź na to pytanie , a także specyfikację .
Zauważ, że ta odpowiedź zakłada, że wszystkie elementy podrzędne w obrębie tego samego elementu nadrzędnego są tego samego typu elementu, div
. Jeśli masz inne elementy różnych typów, takie jak h1
lub p
, musisz użyć :nth-of-type()
zamiast, :nth-child()
aby upewnić się, że liczysz tylko div
elementy:
<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>
W przypadku wszystkich innych elementów (klas, atrybutów lub dowolnej ich kombinacji), gdy szukasz n-tego dziecka pasującego do dowolnego selektora, nie będziesz w stanie tego zrobić za pomocą czystego selektora CSS. Zobacz moją odpowiedź na to pytanie .
Nawiasem mówiąc, nie ma dużej różnicy między 4n a 4n + 4 w odniesieniu do :nth-child()
. Jeśli użyjesz n
zmiennej, zacznie ona liczyć od 0. Oto, co pasowałby każdy selektor:
: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
...
Jak widać, oba selektory będą pasować do tych samych elementów, co powyżej. W tym przypadku nie ma różnicy.
tr td:nth-child(4)
. Zwróć uwagę na brak n w nawiasach
div:nth-child(4n+4)
Potrzebujesz poprawnego argumentu dla nth-child
pseudoklasy.
Argument powinien być w formie an + b
, aby dopasować każdego a th dziecko począwszy od b.
Zarówno a
i b
są opcjonalne całkowitymi i oba mogą być zerowa lub ujemna.
a
wynosi zero, nie ma klauzuli „co th dziecko” .a
jest ujemne, dopasowanie jest wykonywane wstecz od b
.b
jest zero lub ujemne, wówczas możliwe jest zapisanie równoważnego wyrażenia przy użyciu dodatniego b
np. 4n+0
Jest takie samo jak 4n+4
. Podobnie 4n-1
jest jak 4n+3
.Przykłady:
li:nth-child(4n) {
background: yellow;
}
<ol>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ol>