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+-ana
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 h1lub p, musisz użyć :nth-of-type()zamiast, :nth-child()aby upewnić się, że liczysz tylko divelementy:
<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 nzmiennej, 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-childpseudoklasy.
Argument powinien być w formie an + b, aby dopasować każdego a th dziecko począwszy od b.
Zarówno ai bsą opcjonalne całkowitymi i oba mogą być zerowa lub ujemna.
awynosi zero, nie ma klauzuli „co th dziecko” .ajest ujemne, dopasowanie jest wykonywane wstecz od b.bjest zero lub ujemne, wówczas możliwe jest zapisanie równoważnego wyrażenia przy użyciu dodatniego bnp. 4n+0Jest takie samo jak 4n+4. Podobnie 4n-1jest 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>