Алгебра в calc(), новая специфичность селекторов 4 уровня и другие майские новинки CSS

HTML, CSS, JS

Вчерашняя (уже третья за май 2018 г.) телеконференция Рабочей группы CSS принесла несколько сюрпризов: в функцию calc() добавили долгожданную возможность делить значения одинаковой размерности друг на друга (например, calc(500px / 100vw)), получая безразмерные коэффициенты (а в перспективе — вообще делать любые математически допустимые операции с CSS-величинами, скажем, высчитывать площади фигур в квадратных пикселях, умножая высоту на ширину, или делить расстояние на время, получая скорость анимации в пикселях в секунду). А у псевдоклассов :matches(), :not() (со списком аргументов) и :has() из модуля селекторов 4 уровня изменились правила специфичности — теперь она не будет высчитываться динамически в зависимости от того, какой аргумент из списка реально совпал, а всегда браться по самому специфичному из аргументов. Так что давнюю реализацию в WebKit и недавнюю частичную в Chrome опять придется переделывать — но, по идее, для будущих реализаций новый алгоритм станет проще.

А еще конец мая выдался «урожайным» на обновления CSS-спецификаций (постоянных версий, публикуемых как «технические отчеты», technical reports, в разделе w3.org/TR/, которые нужны для отслеживания истории развития стандартов и их патентной чистоты). 24 мая вышля обновленная редакция модуля CSS-изоляции (CSS Containment) 1 уровня, полезного для оптимизации перерисовки компонентов, и сразу два кандидата в рекомендации про режимы письма — 3 уровня (обновленный) и 4 уровня (впервые в этом статусе, включает добавочные возможности для вывода текста «боком»). А 28 мая обновилась редакция модуля CSS-колонок 1 уровня: он с 2011 г. уже был кандидатом в рекомендации, но с тех пор в нем нашли много проблем и неточностей, так что с октября 2017 г. его опять «понизили» до рабочего черновика (увы, с CSS-спецификациями такое бывает:). Но в новой редакции большинство проблемных мест исправлено, так что есть шанс, что скоро он вернет себе «солидный» статус — тем более что браузеры наконец дружно поддерживают его без префиксов.

Следить за новинками рабочей группы CSS можно в их блоге. А прояснять спорные вопросы лучше всего прямо на гитхабе:).

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