Сара Суайдан рассказала об оптимизации содержимого страницы для режима чтения — "Design for reading: tips for optimizing content for Reader modes and reading apps".
Стили страницы могут быть доступны не для всех пользователей, например они недоступны для пользователей RSS-ридеров или при использовании режима чтения в браузере. Поэтому очень не рекомендуется размещать контент на уровне стилей. Если с помощью разметки нельзя выразить текущее визуальное представление (например, сложную анимацию), то нужно добавить её описание. Иногда, наоборот, нужно скрыть какую-либо часть контента в режиме для чтения. В этом случае может помочь глобальный атрибут
Основная мысль статьи. Наш контент не всегда выглядит так, как мы этого хотим. Это не должно иметь большого значения, если поддерживать строгое разделение между контентом и стилями; контент будет доступен всем пользователям.
#html #css
https://www.sarasoueidan.com/blog/tips-for-reader-modes/
Стили страницы могут быть доступны не для всех пользователей, например они недоступны для пользователей RSS-ридеров или при использовании режима чтения в браузере. Поэтому очень не рекомендуется размещать контент на уровне стилей. Если с помощью разметки нельзя выразить текущее визуальное представление (например, сложную анимацию), то нужно добавить её описание. Иногда, наоборот, нужно скрыть какую-либо часть контента в режиме для чтения. В этом случае может помочь глобальный атрибут
hidden
.Основная мысль статьи. Наш контент не всегда выглядит так, как мы этого хотим. Это не должно иметь большого значения, если поддерживать строгое разделение между контентом и стилями; контент будет доступен всем пользователям.
#html #css
https://www.sarasoueidan.com/blog/tips-for-reader-modes/
Sara Soueidan
Design for reading: tips for optimizing content for Reader modes and reading apps
– The personal website of Sara Soueidan, inclusive design engineer
Брайан Карделл из Igalia поделился планами по прототипированию поддержки CSS-селектора :has() — "Can I :has()".
Cелектор :has() добавляет в CSS возможность стилизации элемента на основе его содержимого. Это единственный селектор в таком роде — другие селекторы работают по направлению от детей к родителям. Он появился в черновике спецификации Selectors Level 4 в 2011 году, но до сих пор не был имплементирован в браузерах. Основная сложность заключается в том, что :has() ломает принципы работы со стилями, которые лежат в основе многих оптимизаций, благодаря которым браузеры могут поддерживать стабильные 60 fps.
На протяжении десяти лет в рабочей группе CSS возникали обсуждения по поводу :has(), но они никуда не вели, потому что никто не брался за прототипирование. Недавно компанию Igalia наняла компания eyeo (разрабатывает Adblock Browser и Adblock Plus) для того, чтобы сдвинуть эту фичу с мёртвой точки. Ребята планируют сделать прототипы и в принципе понять, возможно ли реализовать :has() без проблем для производительности. Этот эксперимент определит дальнейшую судьбу селектора. Либо он будет добавлен в браузеры, либо его функциональность будет реализована в другом виде, например, на уровне DOM API.
#css #experimental
https://bkardell.com/blog/canihas.html
Cелектор :has() добавляет в CSS возможность стилизации элемента на основе его содержимого. Это единственный селектор в таком роде — другие селекторы работают по направлению от детей к родителям. Он появился в черновике спецификации Selectors Level 4 в 2011 году, но до сих пор не был имплементирован в браузерах. Основная сложность заключается в том, что :has() ломает принципы работы со стилями, которые лежат в основе многих оптимизаций, благодаря которым браузеры могут поддерживать стабильные 60 fps.
На протяжении десяти лет в рабочей группе CSS возникали обсуждения по поводу :has(), но они никуда не вели, потому что никто не брался за прототипирование. Недавно компанию Igalia наняла компания eyeo (разрабатывает Adblock Browser и Adblock Plus) для того, чтобы сдвинуть эту фичу с мёртвой точки. Ребята планируют сделать прототипы и в принципе понять, возможно ли реализовать :has() без проблем для производительности. Этот эксперимент определит дальнейшую судьбу селектора. Либо он будет добавлен в браузеры, либо его функциональность будет реализована в другом виде, например, на уровне DOM API.
#css #experimental
https://bkardell.com/blog/canihas.html
Bkardell
Can I :has()
As you might know, my company (Igalia) works on all of the web engines and we contribute a lot. I'm very proud of all of the things we're able to do to improve both the features o
Барри Поллард рассказал про новые CSS-дескрипторы директивы
Для управления загрузкой шрифтов используется директива
Для решения этой проблемы был придуман подход с использованием Font Loading API и сопоставлением метрик фоллбек-шрифта с метриками загружаемого шрифта. Этот подход работает, но он не очень удобен в реализации. По этой причине в рамках спецификации CSS Fonts Module Level 5 были добавлены новые дескрипторы
На данный момент поддержка descent-override, line-gap-override, advance-override уже есть в Chrome и Firefox. Поддержка size-adjust появилась недавно в Chrome Canary и в Firefox за экспериментальным флагом.
#performance #fonts #ux #css
https://www.smashingmagazine.com/2021/05/reduce-font-loading-impact-css-descriptors/
@font-face
, помогающие уменьшить сдвиг контента после загрузки шрифта, — "A New Way To Reduce Font Loading Impact: CSS Font Descriptors".Для управления загрузкой шрифтов используется директива
font-display
. Очень часто её используют со значением swap
, так как текст страницы с ней появляется сразу и посетителям страницы не нужно ждать загрузки шрифта. Но при использовании font-display: swap
возникает проблема со сдвигом контента, из-за которой посетители во время чтения текста могут потерять текущую позицию в тексте.Для решения этой проблемы был придуман подход с использованием Font Loading API и сопоставлением метрик фоллбек-шрифта с метриками загружаемого шрифта. Этот подход работает, но он не очень удобен в реализации. По этой причине в рамках спецификации CSS Fonts Module Level 5 были добавлены новые дескрипторы
size-adjust
, descent-override
, line-gap-override
, advance-override
, с помощью которых можно задать дополнительные метрики для фоллбек-шрифта, уменьшая непредсказуемый сдвиг контента. В коде это выглядит так:@font-face {
font-family: 'Lato';
src: url('/fonts/Lato.woff2') format('woff2');
font-weight: 400;
}
@font-face {
font-family: "Lato-fallback";
size-adjust: 97.38%;
ascent-override: 99%;
src: local("Arial");
}
h1 {
font-family: Lato, Lato-fallback, sans-serif;
}
На данный момент поддержка descent-override, line-gap-override, advance-override уже есть в Chrome и Firefox. Поддержка size-adjust появилась недавно в Chrome Canary и в Firefox за экспериментальным флагом.
#performance #fonts #ux #css
https://www.smashingmagazine.com/2021/05/reduce-font-loading-impact-css-descriptors/
Smashing Magazine
A New Way To Reduce Font Loading Impact: CSS Font Descriptors — Smashing Magazine
Web fonts are often terrible for web performance and none of the font loading strategies are particularly effective to address that. If you want to use web fonts your choices are basically Flash of Invisible Text (aka FOIT) or Flash of Unstyled Text (FOUT).…
Макс Бок написал статью о том, почему выражения от контейнера очень важны для дальнейшего развития веб-компонентов — "Container Queries in Web Components".
В статье разбирается пример использования экспериментальных выражений от контейнера для создания веб-компонента, который изменяет свой внешний вид в зависимости от места его использования. Макс очень воодушевлён этой возможностью, так как выражения от контейнера открывают возможности для создания полностью адаптивных независимых веб-компонентов. Это означает, что у разработчиков появляется новый инструмент для создания таких макетов, которые нельзя было раньше реализовать с помощью веб-компонентов.
#webcomponents #css #experimental
https://mxb.dev/blog/container-queries-web-components/
В статье разбирается пример использования экспериментальных выражений от контейнера для создания веб-компонента, который изменяет свой внешний вид в зависимости от места его использования. Макс очень воодушевлён этой возможностью, так как выражения от контейнера открывают возможности для создания полностью адаптивных независимых веб-компонентов. Это означает, что у разработчиков появляется новый инструмент для создания таких макетов, которые нельзя было раньше реализовать с помощью веб-компонентов.
#webcomponents #css #experimental
https://mxb.dev/blog/container-queries-web-components/
Max Böck
Container Queries in Web Components
Container Queries are one of the most anticipated new features in CSS. I recently got a chance to play with them a bit and came up with this demo.
Производительность стилизации в shadow DOM
Нолан Лоусон провёл небольшое исследование производительности стилизации в shadow DOM — "Does shadow DOM improve style performance?".
В пайплайне рендеринга браузера этап стилизации может занимать значительное время. В теории shadow DOM может его сократить, так как браузеру достаточно обработать инкапсулированные элементы. Проведённый бенчмарк подтвердил эту гипотезу, но только для сложных селекторов. Выигрыша относительно простых селекторов для
Выводы из статьи. Вариант оптимизации стилизации с помощью shadow DOM можно рассматривать при проектировании фреймворков. Shadow DOM не даёт прироста производительности относительно CSS Modules и других подобных решений для инкапсуляции стилей.
#css #performance #benchmark
https://nolanlawson.com/2021/08/15/does-shadow-dom-improve-style-performance/
Нолан Лоусон провёл небольшое исследование производительности стилизации в shadow DOM — "Does shadow DOM improve style performance?".
В пайплайне рендеринга браузера этап стилизации может занимать значительное время. В теории shadow DOM может его сократить, так как браузеру достаточно обработать инкапсулированные элементы. Проведённый бенчмарк подтвердил эту гипотезу, но только для сложных селекторов. Выигрыша относительно простых селекторов для
id
и class
нет.Выводы из статьи. Вариант оптимизации стилизации с помощью shadow DOM можно рассматривать при проектировании фреймворков. Shadow DOM не даёт прироста производительности относительно CSS Modules и других подобных решений для инкапсуляции стилей.
#css #performance #benchmark
https://nolanlawson.com/2021/08/15/does-shadow-dom-improve-style-performance/
Read the Tea Leaves
Does shadow DOM improve style performance?
Update: I wrote a follow-up post on this topic. Short answer: Kinda. It depends. And it might not be enough to make a big difference in the average web app. But it’s worth understanding why. …
VirtualKeyboard API на практике
Брамус Ван Дамм написал статью про практическое применение VirtualKeyboard API — "Prevent content from being hidden underneath the Virtual Keyboard by means of the VirtualKeyboard API".
В статье рассказывается о том, как реализовать раскладку элементов страницы с адаптацией под открытие виртуальной клавиатуры. Для решения подобных задач можно использовать переменные окружения CSS, которые были добавлены в рамках VirtualKeyboard API:
Есть небольшой нюанс. Чтобы воспользоваться VirtualKeyboard API, браузеру необходимо сообщить о своём намерении управлять перекрытием с помощью вызова кода
navigator.virtualKeyboard.overlaysContent = true. Это не очень удобно, поэтому Брамус завёл ишью с обсуждением альтернативных механизмов включения VirtualKeyboard API.
Хорошая статья. Рекомендую почитать всем, кто разрабатывает сайты и web-приложения под мобилки.
#css #api #mobile
https://www.bram.us/2021/09/13/prevent-items-from-being-hidden-underneath-the-virtual-keyboard-by-means-of-the-virtualkeyboard-api/
Брамус Ван Дамм написал статью про практическое применение VirtualKeyboard API — "Prevent content from being hidden underneath the Virtual Keyboard by means of the VirtualKeyboard API".
В статье рассказывается о том, как реализовать раскладку элементов страницы с адаптацией под открытие виртуальной клавиатуры. Для решения подобных задач можно использовать переменные окружения CSS, которые были добавлены в рамках VirtualKeyboard API:
keyboard-inset-top
, keyboard-inset-right
, keyboard-inset-bottom
и т.п. Например, адаптация нижнего блока под открытие клавиатуры на CSS может выглядеть так:.bottom-box {
position: fixed;
bottom: 0;
margin-bottom: calc(20px + env(keyboard-inset-height));
}
Есть небольшой нюанс. Чтобы воспользоваться VirtualKeyboard API, браузеру необходимо сообщить о своём намерении управлять перекрытием с помощью вызова кода
navigator.virtualKeyboard.overlaysContent = true. Это не очень удобно, поэтому Брамус завёл ишью с обсуждением альтернативных механизмов включения VirtualKeyboard API.
Хорошая статья. Рекомендую почитать всем, кто разрабатывает сайты и web-приложения под мобилки.
#css #api #mobile
https://www.bram.us/2021/09/13/prevent-items-from-being-hidden-underneath-the-virtual-keyboard-by-means-of-the-virtualkeyboard-api/
Bram.us
Prevent content from being hidden underneath the Virtual Keyboard by means of the VirtualKeyboard API
One of the problems on mobile devices is that the keyboard can hide some of your content. The VirtualKeyboard API aims to solve this. The Problem The current behavior on mobile devices in Safari on iOS is that as the keyboard gets shown, the Layout Viewport…
Анимирование открывающихся блоков без лагов
Сэм Торогуд из Google рассказал о том, как реализовать аккордеон, который будет работать плавно даже на слабых устройствах — "How I Learnt To Stop Worrying And Love Animating The Box Model".
В статье разбирается два метода создания аккордеонов: с изменением высоты внешнего блока и с помощью хака с отрицательным отступом. Любая реализация аккордеона с нефиксированной высотой приводит к сдвигу элементов страницы после аккордеона. Этот сдвиг вызывает перерисовки блоков. Если страница очень сложная или если она работает на слабом устройстве, то такие перерисовки приводят к лагам.
Для решения этой проблемы нужно вынести сдвигаемые элементы в отдельный слой рендеринга с помощью свойства
Полезная статья. Рекомендую почитать всем, кто разрабатывает интерфейсы.
#performance #css
https://whistlr.info/2021/box-model-animation/
Сэм Торогуд из Google рассказал о том, как реализовать аккордеон, который будет работать плавно даже на слабых устройствах — "How I Learnt To Stop Worrying And Love Animating The Box Model".
В статье разбирается два метода создания аккордеонов: с изменением высоты внешнего блока и с помощью хака с отрицательным отступом. Любая реализация аккордеона с нефиксированной высотой приводит к сдвигу элементов страницы после аккордеона. Этот сдвиг вызывает перерисовки блоков. Если страница очень сложная или если она работает на слабом устройстве, то такие перерисовки приводят к лагам.
Для решения этой проблемы нужно вынести сдвигаемые элементы в отдельный слой рендеринга с помощью свойства
will-change
. Чтобы зря не тратить ресурсы (страница с большим количеством слоёв потребляет больше памяти), можно устанавливать will-change
перед началом анимации и удалять после завершения.Полезная статья. Рекомендую почитать всем, кто разрабатывает интерфейсы.
#performance #css
https://whistlr.info/2021/box-model-animation/
samthor.au
How I Learnt To Stop Worrying And Love Animating The Box Model
Or, let's talk about accordions. 🪗
Новая CSS-инфраструктура Chrome DevTools
Крити Сапра написала статью про обновлённый подход подключения CSS в кодовой базе Chrome DevTools — "Modernising CSS infrastructure in DevTools".
В кодовой базе DevTools очень долгое время использовалась устаревшая модульная система. С её помощью происходило разрешение зависимостей между JS-файлами и подключение CSS. При переходе на TypeScript возник вопрос отказа от старой модульной системы и миграции существующих стилей. Самым подходящим вариантом стала автоматическая конвертация стилей в JS-файлы, которые экспортируют объект
Такое решение позволило избавиться от проблемы дублирования стилей, от потенциальной коллизии названия классов и подготовило код для дальнейшей миграции на CSS Module Scripts. В статье также говорится о том, что сама спецификация CSS Module Scripts родилась из задачи обновления модульной системы в DevTools.
#css #migration #chrome
https://developer.chrome.com/blog/modernising-css-infra-in-devtools/
Крити Сапра написала статью про обновлённый подход подключения CSS в кодовой базе Chrome DevTools — "Modernising CSS infrastructure in DevTools".
В кодовой базе DevTools очень долгое время использовалась устаревшая модульная система. С её помощью происходило разрешение зависимостей между JS-файлами и подключение CSS. При переходе на TypeScript возник вопрос отказа от старой модульной системы и миграции существующих стилей. Самым подходящим вариантом стала автоматическая конвертация стилей в JS-файлы, которые экспортируют объект
CSSStyleSheet
. Таким образом из любого сконвертированного файла можно импортировать стили и применить их к веб-компонентам с помощью adoptedStyleSheets
.Такое решение позволило избавиться от проблемы дублирования стилей, от потенциальной коллизии названия классов и подготовило код для дальнейшей миграции на CSS Module Scripts. В статье также говорится о том, что сама спецификация CSS Module Scripts родилась из задачи обновления модульной системы в DevTools.
#css #migration #chrome
https://developer.chrome.com/blog/modernising-css-infra-in-devtools/
Chrome for Developers
Modernising CSS infrastructure in DevTools | Blog | Chrome for Developers
How we researched and updated the CSS infrastructure in DevTools.
Обзор CSS Cascade Layers
Брамус Ван Дамм написал статью про Cascade Layers — "The Future of CSS: Cascade Layers (CSS @layer)".
Полгода назад София Валитова написала хорошую статью про
Экспериментальная поддержка
#css
https://www.bram.us/2021/09/15/the-future-of-css-cascade-layers-css-at-layer/
Брамус Ван Дамм написал статью про Cascade Layers — "The Future of CSS: Cascade Layers (CSS @layer)".
Полгода назад София Валитова написала хорошую статью про
@layer
. В статье Брамуса дополнительно рассматриваются краевые случаи использования слоёв: поведение import!
внутри слоя, использование Cascade Layers с медиавыражениями, запрет на перемешивание @import/@namespace
и @layer
. Подробно разбирается мотивация добавления слоёв в стандарт с большим количеством примеров.Экспериментальная поддержка
@layer
уже есть в Canary-версиях Firefox и Chrome. Также ведутся работы по его добавлению в WebKit.#css
https://www.bram.us/2021/09/15/the-future-of-css-cascade-layers-css-at-layer/
Bram.us
The Future of CSS: Cascade Layers (CSS @layer)
When authoring CSS we have to carefully think about how we write and structure our code. Cascade Layers (CSS @layer) aim to ease this task.
Руководство по отладке CSS
Стефани Эклз написала статью про отладку CSS — "A Guide To CSS Debugging".
В статье рассказывается про способы поиска элементов, которые вызывают переполнение и приводят к появлению нежелательных полос прокрутки. Про решение проблем с каскадом. Про ошибки, вызванные неконсистентностью браузеров. Про проблемы CSS, которые чрезмерно опираются на структуру документа. В тексте есть много ссылок на смежные статьи, которые будут полезны всем, кто не очень сильно погружён в вёрстку.
Тем не менее в статье есть и странные моменты. В разделе про уменьшение сдвига контента описывается проблема и приводится несколько общих советов, но нет рекомендаций по отладке. Также ожидал увидеть рекомендации по отладке ошибок, связанных с контекстом наложения (stacking context), но их нет.
#css #debug
https://www.smashingmagazine.com/2021/10/guide-debugging-css/
Стефани Эклз написала статью про отладку CSS — "A Guide To CSS Debugging".
В статье рассказывается про способы поиска элементов, которые вызывают переполнение и приводят к появлению нежелательных полос прокрутки. Про решение проблем с каскадом. Про ошибки, вызванные неконсистентностью браузеров. Про проблемы CSS, которые чрезмерно опираются на структуру документа. В тексте есть много ссылок на смежные статьи, которые будут полезны всем, кто не очень сильно погружён в вёрстку.
Тем не менее в статье есть и странные моменты. В разделе про уменьшение сдвига контента описывается проблема и приводится несколько общих советов, но нет рекомендаций по отладке. Также ожидал увидеть рекомендации по отладке ошибок, связанных с контекстом наложения (stacking context), но их нет.
#css #debug
https://www.smashingmagazine.com/2021/10/guide-debugging-css/
Smashing Magazine
A Guide To CSS Debugging — Smashing Magazine
Debugging in CSS means figuring out what might be the problem when you have unexpected layout results. Today, Stephanie Eckles will look at a few categories bugs often fit into, see how you can evaluate the situation, and explore techniques that help prevent…
Новые единицы измерения CSS, зависящие от области просмотра
Брамус Ван Дамм рассказал про новые единицы измерения, которые недавно были добавлены в спецификацию CSS Values and Units Level 4 — "The Large, Small, and Dynamic Viewports".
Довольно давно в браузерах появилась поддержка единиц измерений
Для решения этой проблемы были придуманы разные хаки, а CSSWG разработала новые единицы измерения, более тонко учитывающие поведение вьюпорта:
—
—
—
На данный момент новые единицы измерения не поддерживаются ни в одном браузере, но первые коммиты для их поддержки уже были добавлены в WebKit.
#css #spec #mobile
https://www.bram.us/2021/07/08/the-large-small-and-dynamic-viewports/
Брамус Ван Дамм рассказал про новые единицы измерения, которые недавно были добавлены в спецификацию CSS Values and Units Level 4 — "The Large, Small, and Dynamic Viewports".
Довольно давно в браузерах появилась поддержка единиц измерений
vw
, vh
, vmax
, vmin
. Их используют для ограничения размера элемента размером доступной области просмотра и для заполнения вьюпорта содержимым на мобилках. Когда создавалась спецификация, всё было логично. Однако ситуация изменилась, когда Safari стал скрывать части интерфейса во время прокрутки. Размер вьюпорта стал меняться динамически, и страницы, использующие vh
, стали перекрываться интерфейсом браузера.Для решения этой проблемы были придуманы разные хаки, а CSSWG разработала новые единицы измерения, более тонко учитывающие поведение вьюпорта:
—
lvw
, lvh
, lvmax
, lvmin
— единицы относительно вьюпорта браузера со скрытыми элементами интерфейса (префикс "l" — large viewport)—
svw
, svh
, svmax
, svmin
— единицы относительно вьюпорта браузера без скрытых элементов интерфейса (префикс "s" — small viewport)—
dvw
, dvh
, dvmax
, dvmin
— единицы относительно вьюпорта, учитывающие динамическое изменение интерфейса (префикс "d" — dynamic viewport)На данный момент новые единицы измерения не поддерживаются ни в одном браузере, но первые коммиты для их поддержки уже были добавлены в WebKit.
#css #spec #mobile
https://www.bram.us/2021/07/08/the-large-small-and-dynamic-viewports/
Bram.us
The Large, Small, and Dynamic Viewports
There are some changes being proposed regarding viewport units, finally solving that "100vh in Safari on iOS" issue …
Использование focus-visible с обратной совместимостью
Патрик Лаук поделился своим подходом для управления стилями фокуса — ":focus-visible and backwards compatibility".
По умолчанию браузеры отображают фокус только там, где нужно. Например, фокус не устанавливается при клике на кнопку с помощью мыши, но появляется при переходе к кнопке с помощью клавиатуры. Для пользователей это логичное поведение. Когда фокус кастомизируется с помощью псевдокласса
Для кастомизации фокуса во всех браузерах с учётом
На данный момент
#css #a11y
https://www.tpgi.com/focus-visible-and-backwards-compatibility/
Патрик Лаук поделился своим подходом для управления стилями фокуса — ":focus-visible and backwards compatibility".
По умолчанию браузеры отображают фокус только там, где нужно. Например, фокус не устанавливается при клике на кнопку с помощью мыши, но появляется при переходе к кнопке с помощью клавиатуры. Для пользователей это логичное поведение. Когда фокус кастомизируется с помощью псевдокласса
:focus
, он начинает отображаться во всех ситуациях, вызывая замешательство у пользователей и дизайнеров. Для решения этой проблемы в стандарт был добавлен псевдокласс :focus-visible
, с помощью которого можно кастомизировать фокус, не ломая его стандартное поведение.Для кастомизации фокуса во всех браузерах с учётом
:focus-visible
Патрик советует использовать следующий подход:
/* стилизация фокуса */
/* в устаревших браузерах */
button:focus {
outline: dotted 5px teal;
}
/* отключение стилей `:focus` */
/* в современных браузерах */
*:focus:not(:focus-visible) {
outline: none !important;
}
/* стилизация фокуса */
/* в современных браузерах */
button:focus-visible {
outline: dotted 5px teal;
}
На данный момент
:focus-visible
поддерживается во всех браузерах (в Safari за экспериментальным флагом).#css #a11y
https://www.tpgi.com/focus-visible-and-backwards-compatibility/
TPGi
:focus-visible and backwards compatibility - TPGi
Updated March 2023 Clearly visible focus styles are important for sighted keyboard users. However, these focus styles can often be undesirable when they are applied as a result of a...
Создание паттернов с помощью CSS Painting API
Джордж Франсис написал туториал по созданию генеративных паттернов с помощью CSS Painting API — "Creating Generative Patterns with The CSS Paint API".
Разработчики браузеров уже несколько лет работают над проектом Гудини (Houdini) — набором API для предоставления низкоуровневого доступа к CSS-движку. В этот набор входят CSS Painting API, CSS Layout API, CSS Properties and Values API и другие API.
CSS Painting API предоставляет низкоуровневый доступ к средствам рендеринга CSS. С его помощью разработчики могут создавать JavaScript-ворклеты для рендеринга изображений. Эти ворклеты могут быть использованы везде, где можно использовать изображения, например, в
Поддержка CSS Painting API на данный момент есть только в Chrome и других браузерах на базе Chromium.
#css #tutorial
https://css-tricks.com/creating-generative-patterns-with-the-css-paint-api/
Джордж Франсис написал туториал по созданию генеративных паттернов с помощью CSS Painting API — "Creating Generative Patterns with The CSS Paint API".
Разработчики браузеров уже несколько лет работают над проектом Гудини (Houdini) — набором API для предоставления низкоуровневого доступа к CSS-движку. В этот набор входят CSS Painting API, CSS Layout API, CSS Properties and Values API и другие API.
CSS Painting API предоставляет низкоуровневый доступ к средствам рендеринга CSS. С его помощью разработчики могут создавать JavaScript-ворклеты для рендеринга изображений. Эти ворклеты могут быть использованы везде, где можно использовать изображения, например, в
background-image
и border-image
. В туториале рассказывается об использовании CSS Painting API для создания генеративного арта.Поддержка CSS Painting API на данный момент есть только в Chrome и других браузерах на базе Chromium.
#css #tutorial
https://css-tricks.com/creating-generative-patterns-with-the-css-paint-api/
CSS-Tricks
Creating Generative Patterns with The CSS Paint API | CSS-Tricks
The browser has long been a medium for art and design. From Lynn Fisher's joyful A Single Div creations to Diana Smith's staggeringly detailed CSS paintings,
Что появилось в CSS после CSS3
Крис Койер сделал обзор CSS-фич для тех, кто не следил за развитием языка последние семь лет — "What should someone learn about CSS if they last boned up during CSS3?".
С момента появления CSS3 в языке появились:
— гриды и флексы для удобной раскладки элементов на странице;
— Houdini — набор API для программного расширения возможностей CSS;
— новый синтаксис определения цвета без запятой
— кастомные свойства — близкий аналог переменных в препроцессорах
— preference queries — медиавыражения, использующиеся для адаптации страницы под пользовательские настройки операционной системы;
— поддержка вариативных шрифтов для создания страниц с богатой типографикой;
— поддержка SVG-путей для определения масок, управления анимацией и обтеканием текста;
— CSS-фильтры для определения функций наложения цвета и создания эффектов;
— поддержка Shadow DOM для стилизации кастомных элементов.
#css
https://css-tricks.com/whats-new-since-css3/
Крис Койер сделал обзор CSS-фич для тех, кто не следил за развитием языка последние семь лет — "What should someone learn about CSS if they last boned up during CSS3?".
С момента появления CSS3 в языке появились:
— гриды и флексы для удобной раскладки элементов на странице;
— Houdini — набор API для программного расширения возможностей CSS;
— новый синтаксис определения цвета без запятой
rgb(255 0 0 / 0.5)
;— кастомные свойства — близкий аналог переменных в препроцессорах
var(--accentColor)
;— preference queries — медиавыражения, использующиеся для адаптации страницы под пользовательские настройки операционной системы;
— поддержка вариативных шрифтов для создания страниц с богатой типографикой;
— поддержка SVG-путей для определения масок, управления анимацией и обтеканием текста;
— CSS-фильтры для определения функций наложения цвета и создания эффектов;
— поддержка Shadow DOM для стилизации кастомных элементов.
#css
https://css-tricks.com/whats-new-since-css3/
CSS-Tricks
What's New Since CSS3 In 2015? | CSS-Tricks
CSS3 was a massive success for CSS. No doubt loads of people boned up during that time. How has CSS changed since? Let's count the ways.