CSS-live.ru

SelenIT: статьи и переводы

Новогодние подарки Рабочей группы CSS: значения и единицы 4 уровня, медиавыражения 4 и 5 уровней

0
новые спецификации прямо под новогодней ёлкой

Праздничные новогодние хлопоты не мешают Рабочей группе CSS обновлять спецификации. Накануне нового года вышли три обновленных модуля CSS:

  • Значения и единицы 4 уровня (рабочий черновик). Добавлен параграф о вычислении значений типа URL (он унифицирован со спецификацией Fetch, что автоматом снимает вопросы о взаимодействии c CORS и т.п.). Семейство «вьюпортных» единиц (vw, vh…) пополнилось вариантами для большого, маленького и динамического вьюпорта (учитывает скрытие/раскрытие строки адреса и др. панелей мобильных браузеров) и их логическими версиями для разных напралений письма (итого 24 шт. — пожалуй, стоит целой статьи!:), а все шрифтовые единицы (ex, ch, ic, cap, lh) получили свою пару для шрифта корневого элемента, подобно паре em/rem. Все математические функции тоже в силе. Ожидается, что в таком виде этот модуль скоро станет кандидатом в рекомендации. А вот так и не прижившиеся в браузерах функция toggle() и типизированная attr() — увы — отложены на следующий, 5-й уровень.

Псевдокласс :has() — не только «родительский селектор»

0

Браузер Safari часто ругают за редкое обновление и задержку внедрения новинок, но есть у него «любимые» области, в которых он опережает всех. Например, CSS-селекторы 4 уровня. Псевдоклассы :matches() — теперь это :is(), :not() с несколькими селекторами и :nth-child()/:nth-last-child() c добавочным параметром of <что угодно> он поддерживает с 2015 года. На днях он подарил нам новую сенсацию: в его очередной экспериментальной сборке появилась первая реализация долгожданного псевдокласса :has()!

О :has() часто говорят как о «родительском селекторе». Но он может быть не только селектором любого предка, но и селектором предыдущего соседа. О его непростой судьбе — задержке из-за проблемы с производительностью, странном ее «решении» (буквально по анекдоту «чтоб игрушки дольше не ломались, не давайте их детям»:) и его отмене, и первых попытках реализовать — распространяться не будем. Лучше сразу посмотрим…

Примеры использования

День зимнего солнCSSтояния: новые публикации CSS и приятный сюрприз Safari

0
С днем зимнего солнCSSтояния! :)

21 декабря, самый короткий день в 21-м году 21 века, принес сразу несколько приятных CSS-новостей.

Во-первых, у CSS в очередной раз обновилось официальное определение — уже девятое по счету (можно сказать, «CSS9»🤣). Отличий от прошлогоднего не очень много. В само «официальное определение» (т.е. модули, по мнению редакторов полностью проработанные, покрытые тестами и готовые к внедрению) добавились стили для счетчиков (возможность нумеровать списки любыми символами). Список стабильных, но мало опробованных в деле модулей пополнился стилями скроллбаров — псевдоэлементы типа ::-webkit-scrollbar-* окончательно уступят место CSS-свойствам из Мозиллы. Больше всего изменился раздел «Модули с более-менее единообразной реализацией» — туда вошли трансформации 2 уровня (отдельные функции translate(), scale() и rotate(), а также 3D, в котором наконец навели относительный порядок), логические свойства и значения (отступы и т.п. с учетом направления текста), размеры бокса (новые значения типа min-content), позиционирование (включая position:sticky), шрифты 4 уровня, и даже пара скриптовых API — ResizeObserver и API анимаций.

CSS переходит на новый, шестой уровень каскадности

0
скриншот модуля каскада и наследования 6 уровня

Пока одни веб-разработчики спорят о том, как лучше «избавиться от каскада» (чаще всего имея в виду ограничение глобальной видимости стилей), а другие видят в контекстной природе CSS его сильную сторону, CSS продолжает развиваться. Это по-прежнему каскадные таблицы стилей (значение каждого свойства для элемента выбирается из нескольких «претендентов»), но алгоритм этого выбора — он и есть каскад — становится всё гибче и удобнее в управлении. Не успели мы привыкнуть к ключевому слову revert из модуля каскада и наследования 4 уровня, позволяющему откатить любые стили до браузерных дефолтов, как вышел модуль 5 уровня, позволяющий явно управлять приоритетом стилей, группируя их по специальным «слоям». Их уже можно «пощупать» за флагом в основных браузерах (и самое время это сделать, потому что масса ключевых вопросов в них еще проясняется).

А месяц назад появился редакторский черновик  модуля каскада и наследования следующего, уже шестого уровня (кто сказал «CSS6»?:). Главное нововведение — стили с ограниченной областью видимости (scoped-стили). Это не первая попытка их ввести, и открытых вопросов в связи с ними пока еще слишком много (например, должна ли область видимости учитываться раньше или позже специфичности?). Поэтому текущий черновик скорее похож на сборник идей, многие из которых неизбежно отсеются в ходе обсуждений и экспериментов. Но некоторые идеи — например, указание области видимости прямо в селекторе — выглядят интересно и многообещающе. Так что не упустите шанс повлиять на будущее CSS!

Новый рабочий процесс W3C из будущего

0
скриншот нового рабочего процесса W3C

Похоже, в W3C продолжают экспериментировать с машиной времени: на сайте Консорциума уже опубликован документ, датированный 2 ноября этого года — то есть «гость из будущего», его напишут только через две недели:). Речь идет об основном документе, регламентирующем рабочий процесс W3C — «стандарте, по которому делают стандарты».

Главное нововведение нового рабочего процесса W3C — четкое разграничение между будущими стандартами (привычный нам «конвейер» статусов спецификаций — черновик, кандидат в рекомендации, рекомендация…) и так называемыми «заметками» (Notes) — документами, не претендующими на роль стандарта, хоть и нередко полезными. До сих пор статус Note с равным успехом мог встретиться у чего угодно — и у сборника общих принципов разработки веб-платформы, и у пояснения к стандарту (например, к руководству по веб-доступности WCAG 2.0), и у списка актуальных стандартов (например, уже знакомый нам CSS-2020, который в шутку можно назвать «CSS8»), и у окончательно заброшенного модуля CSS (например, Template Layout, всё полезное из которого перекочевало в стандарт CSS Grid). Из-за этого бывала путаница. Теперь назначение документа будет понятно с самого начала: у будущих «заметок» появится свой статус «черновик заметки» (Draft Note), который будет отличать их от «рабочих черновиков» (Working Draft) будущих стандартов. А для заброшенных черновиков, так и не ставших стандартами, заведут свой специальный статус — Discontinued Draft. Кроме этого, вводится новый отдельный класс документов — «реестры» (Registries), содержащие «коллекции значений или других данных, у которых нет нормативных требований к реализации, но которые должны обновляться по особым контролируемым правилам». И уточняются правила внесения правок в уже утвержденные рекомендации.

Будем надеяться, что с новым рабочим процессом стандарты станут понятнее, а выход стандартов «из будущего», с опережением графика, войдет у W3C в привычку и поможет не отставать от жизни!

Укрощаем режимы наложения: difference и exclusion

1

Перевод статьи Taming Blend Modes: `difference` and `exclusion` с сайта css-tricks.com, переведено для css-live.ru с разрешения автора — Аны Тюдор.

До самого 2020-го я не особо увлекалась режимами наложения, во многом потому, что крайне плохо представляла себе будущий результат до того, как попробовать. И этот подход «попробуй и посмотри, что выйдет» почти всегда оставлял меня в ужасе перед тем безобразием, что невольно получалось у меня на экране.

Эта проблема вытекала из незнания механизма их работы. Почти все попадавшиеся мне статьи на эту тему строились на примерах, сравнениях с Фотошопом или многословных художественных описаниях. Примеры бывали великолепны, но без понимания, как работает механизм всего этого, реализация своей творческой задумки путем переделки чужого красивого примера превращается в долгое, мучительное и в конечном итоге бесплодное приключение. А аналогии с Фотошопом практически бесполезны для людей инженерного склада, без дизайнерского опыта. Длинные художественные описания же для меня вообще выглядели каким-то птичьим языком.

Момент просветления случился у меня, когда я наткнулась на спецификацию и нашла в ней математические формулы, по которым работают режимы наложения. Благодаря этому я наконец смогла понять, как это всё работает «под капотом» и где оно может пригодиться. И теперь, узнав это лучше, я поделюсь этим знанием в серии статей.

Сегодня мы рассмотрим, как вообще работает наложение, затем рассмотрим два в чем-то похожих режима наложения — difference и exclusion — и, наконец, доберемся до главной части этой статьи, где разберем несколько классных примеров использования вроде вот таких.

«Родительский селектор» :has() — в реальность!

0
скриншот сообщения о начале реализации :has()

Радостная весть от Igalia (компании, подарившей нам гриды во всех основных движках и не только): сегодня они объявили о начале экспериментальной реализации в движке Blink одной из самых долгожданных фич CSS — псевдокласса :has()!

Первый публичный черновик CSS-каскада 5 уровня

0

Рабочая группа CSS опубликовала первый публичный черновик модуля каскада и наследования 5 уровня. Главная его новинка по сравнению с текущим, 4 уровнем — так называемые «слои» стилей, добавочный критерий каскада, позволяющий задавать приоритет целой группе стилей и гарантирующий, что стили одного «слоя» всегда перекроют стили другого независимо от их специфичности и порядка в коде. Например, стили темы оформления всегда будут перекрывать стили сайта по умолчанию, и для этого не понадобится наращивать специфичность или следить за порядком подключения CSS-файлов. Идея и проработка этого механизма — заслуга Мириам Сюзанн, которая специально для этого присоединилась к команде редакторов в качестве приглашенного эксперта W3C.

Убираем сдвиги в верстке наложением в CSS Grid

2

Перевод статьи Prevent layout shifts with CSS grid stacks с сайта www.hsablonniere.com для css-live.ru, автор — Юбер Саблоньер

Люди используют CSS Grid по двум причинам:

  1. CSS — это потрясающе! Факт, как ни крути.
  2. Гриды — отличный инструмент для создания сложных двумерных макетов.

У меня иногда бывает третья причина использовать CSS Grid: предотвратить сдвиги в верстке. Я пытался придумать для этого приема прикольное сокращение, но у меня получилось лишь АСПНГ: «АнтиСдвиговый Прием с Наложением в Гридах». Вряд ли у меня получится похвастаться мастерством в «изобретении технических терминов» в резюме на LinkedIn, так что жду ваших предложений получше.

Давайте я объясню прием на реальных примерах. В этой статье я покажу:

  • Реальную проблему сдвигов в верстке, с которой я столкнулся в работе над одним компонентом.
  • Ограничения решения с абсолютным позиционированием.
  • Преимущества решения с гридом.

Погодите, о каких вообще сдвигах идет речь?

Безумие на чистом HTML + CSS

0

Играми на «чистом CSS» (т.е. без JS) нас уже давно трудно удивить. Но британскому дизайнеру Джейми Коултеру, пожалуй, удалось. Его недавняя работа в Codepen — полноценный квест с сюжетом, в котором игроку нужно выбраться из мрачного подвала то ли больницы, то ли лаборатории, где накануне произошло что-то ужасное. И заодно узнать шокирующую разгадку… в общем, то, что надо на Хэллоуин!

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

Но завсегдатаев Codepen — и нашего сайта — не меньше разгадки сюжета игры занимает другой вопрос:

Как же это сделано?

Несбывшиеся надежды веб-компонентов

8

Перевод статьи The failed promise of Web Components с сайта lea.verou.me, опубликован на CSS-live.ru с разрешения автора — Лии Веру

Веб-компоненты обещали так много новых возможностей для HTML, с ними веб-разработка должна была стать намного доступнее для непрограммистов и легче для программистов. Помните тот восторг от каждого новёхонького HTML-элемента, который реально что-то делал? Помните, как было здорово, когда стало можно делать слайдеры, палитры для выбора цвета, диалоговые окна, раскрывающиеся виджеты прямо в HTML, без необходимости подключать какие-либо библиотеки?

От веб-компонентов ждали такого же удобства, но для намного более широкого спектра HTML-элементов, и гораздо быстрее, поскольку никому не нужно было бы ждать весь цикл стандартизации и реализации. Просто подключим скрипт, и бац — в нашем распоряжении стало еще больше элементов!

По крайней мере, так задумывалось. В какой-то момент пространство успели заполонить фанатики JS-фреймворков, балдеющие от сложных API, заумных процессов сборки и графов зависимостей, похожих на корни дерева баньян.


Вот как выглядят корни дерева баньян. Фото Дэвида Стенли на Flickr (лицензия CC-BY).

Приключения Masonry-раскладки в CSS

1

«Masonry-раскладка», она же «плиточная верстка», она же «раскладка кирпичиками», она же «Cascading Grid», она же — вернее, один из ее вариантов — «верстка как у Pinterest», она же… в общем, задача верстки такого типа макетов известна верстальщикам очень давно, под многими именами. Раньше на чистом CSS она до конца не решалась. Можно было добиться внешне похожего результата для частных случаев, но какой-то нюанс ускользал. На практике приходилось использовать JS-библиотеки — прежде всего Masonry, написанную Дейвом ДеСандро и, собственно, давшую название такой раскладке.

И вот в Рабочей группе по CSS появилось предложение, а спустя считанные месяцы — и его экспериментальная реализация, которую уже можно пощупать в Firefox Nightly/Beta за флагом. Кроме понятной радости, новинка успела вызвать немало путаницы и споров. Попробуем разобраться.

«Не закрывайте теги!»

15

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

Может, Таб просто всех троллил? Или же в его совете есть рациональное зерно? Попробуем непредвзято разобраться.

Когда 255 × 0 не равно нулю

1

Перевод статьи When 255 × 0 does not Equal Zero с сайта danielcwilson.com для css-live.ru, автор — Дэниел Уилсон

Прежде всего, важная оговорка: я не эксперт в работе с цветами и в цветовых профилях мониторов. И я понимаю лишь самые очевидные различия между дефолтным цветовым пространством для веба — sRGB — и другими более новыми моделями. Мы обсудим оба случая, я объясню то, что знаю сам, и оставлю другим возможность (и ссылки) подключиться к разговору и объяснить лучше.

Ладно… с этим разобрались, теперь к делу (и, пожалуй… простите, что заранее проспойлерил, о чем будет статья): поговорим о математике режимов наложения!

6 первых публичных черновиков новых модулей CSS, которыми вы, возможно, давно пользуетесь

2

При всей парадоксальности заголовка, будто взятого из фантастики про «временные петли», это правда. Три недели назад рабочая группа по CSS опубликовала первые публичные рабочие черновики двух модулей CSS. Сегодня к ним добавились еще аж 4 первых публичных черновика (включая два модуля 5 уровня). И многие новинки роднит то, что часть их функций давно работает почти во всех браузерах, и даже в реальных проектах!