А ну сходу ответьте, чем отличается :has(:not()) от :not(:has())?

17 февраля 2025 г.Будни разработчика
А ну сходу ответьте, чем отличается :has(:not()) от :not(:has())? | 🔁 Новости из телеграм - Ghostbase News

#статья дня

А ну сходу ответьте, чем отличается :has(:not()) от :not(:has())?

На самом деле, если тупо воспользоваться логикой английского языка — легко ошибиться.

Разработчики браузера для, простите, разработчиков Polypane ведут свой блог с разными мелкими фишками, и сегодня — вот такая, как раз об этом.

📌 :has(:not())

Выбирает элементы, которые содержат определённые дочерние элементы, но не содержащие другие.

.card:has(:not(img)) {

background: lightblue;

}

🔹 Выберет .card, если внутри есть любой элемент, кроме <img>.

📌 :not(:has())

Выбирает элементы, не содержащие определённый дочерний элемент.

.card:not(:has(img)) {

background: lightcoral;

}

🔹 Выберет .card, если внутри вообще нет <img>.

Итого:

:has(:not(img)) проверяет, есть ли что-то, кроме <img>.

:not(:has(img)) проверяет, что <img> вообще нет.

Ну а в статье всё то же самое, только чуть подробнее.

Не ошибайтесь, котаны.

#css #has #not