CSS-live.ru

«Родительскому селектору» :has(), скорее всего, запретят быть вложенным

скриншот закрытого бага в WebKit

Вот уже почти месяц, как псевдокласс :has()больше, чем «родительский селектор» — можно «пощупать» в браузере. Можно подвести первые итоги эксперимента: всё не так страшно, как думали, но не так легко, как хотелось бы.

Сложнее всего оказалось обрабатывать вложенные в :has() другие функциональные псевдоклассы — :is(), :where(), :not() и сам :has(). И Антти Койвисто — ведущий разработчик реализации :has() в WebKit, который и нашел способ добиться приемлемого быстродействия для него — обратился к Рабочей группе CSS с предложением запретить такие комбинации.

Идея вызвала было недовольство, но Джен Симмонс объяснила, что реализовать :has() совсем без ограничений едва ли возможно, и сейчас задача — выяснить, какими редкими применениями можно пожертвовать, чтобы поскорее сделать его доступным для более важных случаев. В итоге в WebKit запретили вкладывать :has() друг в друга, но разрешили остальные псевдоклассы: быстродействие таких комбинаций «не оптимально, но с этим можно жить». Код WebKit уже подправили (но спецификацию — пока нет).

На мой взгляд, это отличный компромисс. Если это ограничение поможет быстрее внедрить :has() в браузеры, есть шанс, что с него снимут пометку «необязательный», и его повсеместная поддержка гораздо важнее экзотических случаев. Согласны?

P.S. Это тоже может быть интересно:

3 комментария

  1. Если у вас нету макбука то «пощупать» :has() можно только в статьях яблоководов… чёт разработчики Chrome не спешат внедрять, а жаль.

    1. Разработчики Chrome стараются, как могут. Но в реальном времени отслеживать, что и в каком состоянии внутри элемента и вокруг него — действительно нетривиальная задача. И «яблочники» молодцы, что нашли рабочий подход и опробовали его. Может, теперь, с разумным ограничением этой сложности (и примером перед глазами), и у Хрома работа пойдет поживее… по крайней мере, хочется надеяться:)

  2. Привет друг! 
    В нашем сообществе уже почти 2 тысячи человек! Всего за пол месяца мы набрали 400 новых подписчиков и удержали, а это значит, что контент у нас по настоящему годный. 

    У нас ты сам увидишь :

    1. Хорошие статьи для твоего обучения в мире фрондента; 

    2. Много разных задач и решения их. А самому сообразительному даётся достижение. 

    3. Первый поток курса (конечно, если ты ещё не успел зайти на него, ведь он ограничен в рамках людей). 

    Заходи к нам ТЛГ  deveveloper_house_jun_front

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.