CSS псевдоклас :has - проверка наличия
Псевдокласс :has позволяет проверить, существует ли блок внутри родительского. Своеобразный if в CSS.
Предположим, есть следующая структура:
Если chid имеется, то углы бордюра parent нужно скруглить, в противном случае - оставить 90 градусов.
Если нужно сделать наоборот, если нет child, то parent скруглить углы, то пишем
Кроме этого, можно проверить, следует ли за parent child:
Можно выбрать прямой дочерний элемент:
Можно проверить наличие сразу нескольких элементов:
Проверка отмеченного чек-бокса:
.button-clear {
display: none;
}
.main-menu:has(input:checked) .button-clear {
display: block;
}
Также, можно обработать выбранное в селекторе значение:
form:has(option[value="some"]:checked) some-prm {
display: block;
}
Проверить наличие нескольких дочерних элементов (количественные запросы) и сделать что-либо с каким-то из них:
.child {
display: flex;
gap: 1em;
}
.parent:has(.child:nth-last-child(n + 3)) .child:last-child {
margin-left: auto;
}
последний элемент будет прижат к левому краю
https://css-live.ru/css/psevdoklass-has-ne-tolko-roditelskij-selektor.html