TGViewer
mefody.dev mefody.dev @mefody_dev · 5.38K subscribers
Post #5 1.01K
Наткнулся на интересную статью про псевдокласс :has(), или, как его ещё называют, родительский селектор: https://utilitybend.com/blog/practical-uses-of-the-has-relational-pseudo-class

Автор делится полезными примерами того, как это нововведение в CSS может изменить мышление при вёрстке страниц. Можно додумать свои примеры:
1. form:has(:invalid) — способ как-то стилизовать форму, в которой есть ошибки заполнения инпутов. Так, например, можно показывать блок с сообщениями об ошибках.
2. .grid:has(img) — способ понять, нужно ли перестроить сетку под наличие в ней картинок. Полезно для всяких плиточных интерфейсов.
3. .article:not(:has(h1)) — можно вообще прикрутить CSS-«линтер», который будет подсвечивать несоблюдение каких-то договорённостей в команде, вроде «в статье должен быть заголовок первого уровня».


.article:not(:has(h1)) {
background-color: red;
}

Дать QA набор таких сниппетов — и тестирование той же доступности вёрстки станет быстрее.

Кстати, с :not автор немного запутался. В его примере селектор выглядит .articles:has(:not(figure)), что по сути значит «выбери элемент с классом articles, внутри которого есть что-то, кроме figure». То есть селектор .articles:has(:not(figure)) article по сути не имеет смысла, проще написать .articles article — эффект тот же, только специфичность селектора ниже.

Но за что люблю современный веб, так за то, что можно в твиттере написать автору, а он пообещает посмотреть пример внимательнее и исправить. Так и сделал, ждём апдейта статьи.
Utilitybend Practical uses of the :has() relational pseudo class | utilitybend Explanation and practical demos of what you can do with the :has() pseudo class, from grid layouts to validating forms.
  • 👍 11
More from @mefody_dev
  1. Sep 28, 2026View Transitions Toolkit Брамус делится своей коллекцией утилит, чтобы можно было более уд…
  2. Sep 25, 2026Эффект одометра Люблю такие демки, когда на чистом CSS делают что-то необычное, для чего я…
  3. Sep 23, 2026Цена ошибок гидрации В React есть много ухищрений, чтобы серверный кусок страницы обновилс…
  4. Sep 16, 2026Какие анимации более производительные: CSS или JS? Лучше пару раз увидеть, чем много откуд…
  5. Sep 14, 2026Единица измерения lh Если коротко, то 1lh = 1 line height. И это не размер шрифта, который…
  6. Sep 11, 2026<mermaid-element> Ещё одна полезная библиотека. Брамус собрал кастомный элемент, которому…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →