Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Исправляет и дополняет специфичность для псевдо-классов #3256

Merged
merged 5 commits into from Jul 18, 2022
Merged

Исправляет и дополняет специфичность для псевдо-классов #3256

merged 5 commits into from Jul 18, 2022

Conversation

artur-demidov
Copy link
Contributor

Описание

Постарался написать кратко. Боюсь не очень получилось, приветствуется редактура.

В строке про :not() и :is(), не хватает еще :has(). Но тут возникла проблема, с которой я и завис. А какая специфичность у :has()? Нашел всего пару ресурсов где есть хоть какое то упоминание веса для :has()

Калькулятор

Какой то блог

The specificity of :has() is that of its most specific argument

stackoverflow

and :has() do but only based on what they have inside

Но! проблема в том что единственный браузер где работает :has() сейчас, это safari, и в нем сам псевдо-класс имеет вес 0 1 0, и к нему еще прибавляется самый "большой" вес из аргументов.

Вот демка - тестировал в safari и chrome с флагом (Experimental Web Platform features). Результаты очевидно разные.

Closes #3251

Чек-лист

  • Текст оформлен согласно руководству по стилю
  • Ссылки на внутренние материалы абсолютные, заканчиваются слэшем либо якорем на заголовок (/css/color/, /tools/json/, /tools/gulp/#kak-ponyat)
  • Ссылки на картинки, видео и демки относительные (demos/index.html, ../demos/example.html)

@github-actions github-actions bot added css Контент по CSS улучшение Доработка существующего labels Jun 30, 2022
@artur-demidov
Copy link
Contributor Author

После прояснения ситуации с :has() нужно будет отредактировать данную секцию

@SelenIT
Copy link
Contributor

SelenIT commented Jul 5, 2022

Вот это да! Ничего себе, как все, включая меня, на радостях от того, что :has() вообще появился, проморгали такого слона 😲

По спеке специфичность :has(), как и у :is() и :not(), берется от самого специфичного селектора внутри скобок. В Safari, получается, баг 🤯😱 (засабмитил, приложив ссылку на этот пример).

Один псевдокласс плюс самый специфичный селектор в скобках – насколько я в курсе, на сегодняшний день только у :nth-*-child(An + B of ...), которые тоже работают только в Safari, поэтому о них почти никто не знает и не вспоминает (а жаль).

@artur-demidov
Copy link
Contributor Author

@SelenIT Посмотрел ишью, вроде сразу и пофиксили.

Вот думаю, стоит ли углубляться в описание механики работы

"берется от самого специфичного селектора внутри скобок".

Наверно точнее будет сказать примерно так

"принимает вес селектора который совпал, но если совпало несколько, то берется вес самого весомого"

пока думаю как кратко сформулировать, и так много слова "вес" в одном абзаце

@SelenIT
Copy link
Contributor

SelenIT commented Jul 6, 2022

вес селектора который совпал

Так было одно время, но потом это упростили. Сейчас берется вес самого «тяжелого» аргумента в скобках независимо от того, совпал он или нет.

@artur-demidov
Copy link
Contributor Author

@SelenIT Спасибо за уточнение, ошибочно сделал вывод вообще из другого примера

Copy link
Member

@solarrust solarrust left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И тут классно всё =)

Допиши себя в контрибьюторы и этой статьи тоже, пожалуйста 👍

@solarrust solarrust merged commit bbfc526 into doka-guide:main Jul 18, 2022
nlopin pushed a commit to RomanBarannickov/content that referenced this pull request Sep 9, 2022
)

* Исправляет и дополняет специфичность для псевдо-классов

* Добавляет в описание специфичности :has

* Добавляет меня в контрибьюторы
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
css Контент по CSS улучшение Доработка существующего
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Ошибка в Специфичность
3 participants