Анимация — неотъемлемая часть любого нынешнего веб-интерфейса. Виталий Калашников рассказывает про аппаратное ускорение анимаций, как использовать вычислительную технику при создании динамического веб-приложения. Как с его помощью заставить анимацию работать 60 кадров в секунду даже на мобильном устройстве и при этом не допустить падение браузера у пользователей. А также рассказывает про CSS vs JS анимации и сравнивает производительность.
4. - Скругленные рамки;
- Тени блоков и тени текста;
- Градиенты;
- Множественные фоны;
- Шрифты;
- Анимация.
Эволюция CSS
5. Критический путь рендеринга (CRP)
После того, как браузер получает HTML ответ от сервера, проходит еще множество
этапов перед отрисовкой пикселей на экране. Последовательность действий, которую должен
пройти браузер для первичной отрисовки страницы, называется «путь критического
рендеринга» или CRP.
11. 1. Страница делится на слои
2. Слои растеризируются в текстуры
3. Текстуры загружаются в GPU
4. Compositor инструктирует GPU, как собрать конечное изображение
GPU accelerated compositing
GPU Accelerated Compositing
12. Слой (композитный слой) — часть страницы, поддерево DOM.
Отрисовывается независимо, компонуется в GPU. Может растягиваться,
перемещаться, скрываться (через прозрачность) без отрисовки.
Paint — дорого
Composite — дешево
Слои
13. 1. 3D-трансформации: translate3d, translateZ и т.д.
2. Элементы <video>, <canvas>, <iframe>
3. Анимация через transform и opacity через CSS Transition Animation
4. position: fixed
5. will-change.
6. filter.
Условия создания слоя
14. JS + Полный контроль
+ Синхронизируются с частотой обновления экрана
- Забивают основной поток
+ Просты;
+ Свободны от основного потока
+ Синхронизируются с частотой обновления экрана
CSS
- Неконтролируемые: только пауза и запуск
- Рассинхронизация
JS vs CSS
15.
16. В браузере откройте DevTools -> More tools и там выберите Layers. Этот пункт добавить в
список инструментов еще один пункт слои.
Отладка слоев
24. Неявная композиция: один или несколько не-композитных элементов, которые по
z-index находятся выше композитного элемента, также становятся композитными, то есть
отрисовываются в отдельное изображение, которое затем отправляется на GPU.
Неявная композиция
25. 1. opacity
2. transform
3. filter
Все остальные свойства могут вызывать обновление текстур
Слои для анимации. Дружелюбный CSS
26. Пример с движущимся элементом
● left (постоянные перерисовки)
● translate (2 перерисовки)
● will-change (0 перерисовки)
Слои для анимации
27. ● Относитесь с GPU как к кешу
● Подготавливайте текстуры заранее
● Избегайте неявной композиции
Советы