@Bestolkovy

Почему не срабатывает :nth-child?

Добрый день!

Есть конструкция:

<div>
  <p class="foo"></p>
  <p class="foo"></p>

  <p class="bar"></p>
  <p class="bar"></p>
  <p class="bar"></p>
  <p class="bar"></p>
</div>


Необходимо выбрать второй и третий элемент с классом .bar. Пишу, соответственно:

.bar:nth-child(2),
.bar:nth-child(3) {
  color: yellow;
}


Почему не срабатывает? Как выбрать второй и третий элемент с классом .bar?
  • Вопрос задан
  • 239 просмотров
Решения вопроса 1
@metaf
Потому что nth считает по дереву, а не по селектору. А селектор - это доп. условие, т.е. И 3 по дереву, И .bar класс, что, естественно, не соответсвует вашему условию.
Костыльное решение: codepen.io/anon/pen/QKzXoq
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
edalis
@edalis
HTML, CSS, JS, Node.js
<div>
  <p class="foo"></p>
  <p class="foo"></p>

  <p class="bar"></p>
  <p class="bar bar--yellow"></p>
  <p class="bar bar--yellow"></p>
  <p class="bar"></p>
</div>

.bar--yellow {
    color: yellow;
}


Или как выше уже написали
.bar:nth-child(4),
.bar:nth-child(5) {
  color: yellow;
}


Первый вариант надежнее, так как, если у вас поменяется количество элементов, то не придется переписывать стили.
Ответ написан
Ankhena
@Ankhena Куратор тега CSS
Нежно люблю верстку
При такой конструкции (если неизвестно сколько элементов foo впереди и они могут идти вперемешку) на CSS никак.

Используйте обертку или доп.классы.
Или JS
Ответ написан
Комментировать
@sleepyKitty
.bar:nth-child(4),
.bar:nth-child(5) {
  color: yellow;
}
Ответ написан
Комментировать
Dzvonkevich
@Dzvonkevich
Wordpress & Frontend разработчик
Вам нужен
.element:nth-of-type {

}


или как коллега выше написал, лучше используйте дополнительный класс
Ответ написан
Комментировать
@WQP
Через jquery присваивайте им ещё один класс и его уже меняйте
Ответ написан
Комментировать
dom1n1k
@dom1n1k
Не срабатывает потому, что :nth-child подразумевает сквозной номер элемента в родителе, а не среди подмножества элементов с каким-то классом.
Поведение это спорное и не всегда удобное, но так уж решили авторы спецификаций.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы