CSS: first-child,: nth-child и: last-child не похожи на: eq
Так что, если бы у нас был фрагмент HTML типа
<div>
<div id="bar1" class="foo"></div>
<div id="bar2" class="foo"></div>
<div id="bar3" class="foo"></div>
</div>
, тогдаселектор .foo: nth-child (2) будет соответствовать div # bar2.Если мы вставим еще один элемент в начало контейнера:
<div>
<p>Shift!</p>
<div id="bar1" class="foo"></div>
<div id="bar2" class="foo"></div>
<div id="bar3" class="foo"></div>
</div>
И снова мы выберем .foo: nth-child (2), мы сопоставим div # bar1, потому что второй дочерний элемент контейнера также совпадает.foo.
Таким образом, во втором примере, если мы попробуем .foo: nth-child (1) или эквивалентный .foo: first-child, мы не будем сопоставлять никакие элементы, поскольку первый дочерний элемент вэтот контейнер - тег p - не соответствует .foo.
Аналогично: nth-child может соответствовать дочерним элементам в нескольких контейнерах.В фрагменте HTML:
<div>
<p>Shift!</p>
<div id="bar1" class="foo"></div>
<div id="bar2" class="foo"></div>
<div id="bar3" class="foo"></div>
</div>
<div>
<div id="quux" class="foo"></div>
</div>
селектор .foo: last-child будет соответствовать divs # bar3 и #quux;но .foo: first-child или .foo: nth-child (1) будут соответствовать только #quux, поскольку первый дочерний элемент первого контейнера, опять же, не .foo.
Source https://content.pivotal.io/blog/css-first-child-nth-child-and-last-child-are-not-like-eq