DZHAMBULAT-SAMOUCHKA
@DZHAMBULAT-SAMOUCHKA
Frontend разработчик

Как выбрать элементы удовлетворяющие условию выборки?

Здрасте! У меня есть некий flex контейнер элементы в котором расположены в рядах по 3. У меня в последнем ряду вместо 3 могут располагаться 1 (пример 1) или 2 (пример 2) элементов. Мне нужно выбрать эти элементы и применить к ним стили. Вот рисунок с иллюстрацией. Мне нужно выбрать элементы помеченные красным:
669b8147e7b11072785589.png

Я немного поэкспериментировал с селекторами :last-child и :nth-child и у меня получилось выбрать последний элемент как на примере 1 с помощью этой записи item:last-child:nth-child(3n + 1).

Вот сам код
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Поиграть со селекторами nth-child и nth-last-child.

Для начала попробуем выбрать первый элемент последнего неполного ряда. Селектор :nth-child(3n + 1) выберет нам первые элементы каждого ряда.

Теперь надо ограничить этот список только последним рядом. Видно что нужный нам элемент всегда первый или второй с конца. Так и запишем :nth-last-child(-n + 2).

В итоге получили селектор :nth-child(3n + 1):nth-last-child(-n + 2).
Ну а дальше воспользуемся селектором ~ что бы выбрать все (в вашем случае не больше одного) элементы которые идут после уже выбранного.

Получается вот такой код:
li:nth-child(3n + 1):nth-last-child(-n + 2),
li:nth-child(3n + 1):nth-last-child(-n + 2) ~ li {
  .....
}


UPD: если надо что бы последний ряд выбирался всегда, даже если он полный, то надо заменить -n + 2 на -n + 3.

UPD2: можно пойти немного другим путём и выбирать все элементы после последнего элемента в полном ряду. Получится вот так:
li:nth-child(3n):nth-last-child(-n + 3) ~ li {
  .....
}


Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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