Введение
Мне нравится, когда люди делятся тем, что они хотят видеть в CSS. За последние несколько недель я прочитал два потрясающих списка желаний Дэйва Руперта и Эрика Мейера. В 2022 году мы получили много новых CSS функций , мои любимые из них - контейнерные запросы (Container Query), :has и subgrid.
Я подумал, почему бы мне не поделиться с вами тем, что я хотел бы однажды увидеть в CSS.
Знать о том, перенесён ли элемент (flex-wrap detection)
Когда я использую flex-wrap: wrap, иногда мне хочется, чтобы был способ узнать, в какой именно происходит перенос на новую строку.
Например, предположим, что у меня есть раздел, который содержит заголовок и ссылку. Мы можем сделать этот маленький компонент отзывчивым с помощью flex-wrap: wrap. Вишенкой на торте будет знать, когда элементы переносятся в новую строку.
.section-header { display: flex; flex-wrap: wrap; }

В настоящее время мы не можем определить, когда элементы переносятся. Единственный способ - использовать медиа-запросы для внесения желаемых изменений. Я хотел бы, чтобы у нас могло быть что-то подобное этому:
.section-header { container-type: style flex-wrap; display: flex; flex-wrap: wrap; } @container style(wrap) { /* срабатывает только при переносе элементов */ }
Добавлю от себя, что я бы больше хотел видеть что-то типа
:isWrap
Приведенный выше синтаксис CSS не самый удобный и понятный глазу, но вы поняли идею.
Поддержка gap
В настоящее время нет способа проверить, поддерживается ли gap при использовании с flexbox.
Не буду вдаваться в подробности, но иногда это действительно необходимо. Как я это вижу:
@supports (gap: 10px) { .element { display: flex; gap: 10px; } }
Сейчас этот код не работает.
Новый (логический) линейный градиент (linear-gradient)
Логические свойства CSS отлично подходят для создания многоязычных веб-сайтов. Поскольку арабский - мой родной язык, я использую множество вариантов отображения right-to-left , и каждый раз, когда я использую логические свойства, мне хотелось бы, чтобы они поддерживались и в градиентах.

.hero { background-image: linear-gradient(to inline-end, #000, transparent); }
Знать, является ли элемент sticky-позиционированным
Я могу придумать простой пример, в котором я хочу знать, когда position: sticky активен. Другими словами, когда элемент прилипает.
.site-header { position: sticky; top: 0; } .site-header:sticky { box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.1); }

Сглаженные градиенты
Давайте посмотрим правде в глаза, CSS-градиенты сами по себе не выглядят гладкими. Каждый раз, когда я использую градиенты, мне приходится модифицировать их, чтобы немного сделать их лучше.

Я использую этот отличный инструмент для создания сглаженных градиентов.
.hero { linear-gradient(to bottom, #304365, ease-in-out, transparent); };
Сглаживание в настоящее время является предложением CSSWG, но ни один браузер еще не принял его.
Анимировать text-decoration
Я хотел бы, чтобы у нас был способ анимировать подчеркивания ссылок без использования CSS-фона или псевдоэлементов. Почему бы не использовать что-то вроде text-decoration-size?
a { text-decoration-size: 0%; transition: text-decoration-size 0.3s; } a:hover { text-decoration-size: 100%; }
Leading trim
Одной из проблем при работе с некоторыми шрифтами является различное начальное значение (отступ от букв шрифта), что может привести к несоответствию интервалов до и после шрифта.

Подробнее об этой проблеме и как её исправить тут и тут.
Контролировать overscroll
В настоящее время мы можем предотвратить цепочку прокрутки, используя overscroll-behavoir: contain. Представьте, что у вас есть модальный элемент, и при его прокрутке элемент body тоже будет прокручиваться.

Сейчас это поддерживается, но одна вещь, которая мне в этом не нравится, - это то, что она не будет работать, если элемент имеет короткое содержимое.
Заключение
На этом всё, делитесь своим мнением и предложениями относительно новых CSS функций в комментариях, а любые ошибки в статье смело относите мне в лс, заранее спасибо!
