Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Вступление
Давным давно…
- Скругленные рамки;
- Тени блоков и тени текста;
- Градиенты;
- Множественные фоны;
- Шрифты;
- Анимация.
Эволюция CSS
Критический путь рендеринга (CRP)
После того, как браузер получает HTML ответ от сервера, проходит еще множество
этапов пе...
4. Композиция
1. Стили
2. Каркас
3. Отрисовка
Reflow/Repaint
Reflow and repaint
Repaint
No reflow and repaint
Compositing
1. Страница делится на слои
2. Слои растеризируются
3. Слои выводятся на экран
GPU Accelerated Compositing
1. Страница делится на слои
2. Слои растеризируются в текстуры
3. Текстуры загружаются в GPU
4. Compositor инструктирует G...
Слой (композитный слой) — часть страницы, поддерево DOM.
Отрисовывается независимо, компонуется в GPU. Может растягиваться...
1. 3D-трансформации: translate3d, translateZ и т.д.
2. Элементы <video>, <canvas>, <iframe>
3. Анимация через transform и ...
JS + Полный контроль
+ Синхронизируются с частотой обновления экрана
- Забивают основной поток
+ Просты;
+ Свободны от осн...
В браузере откройте DevTools -> More tools и там выберите Layers. Этот пункт добавить в
список инструментов еще один пункт...
Перерисовка элемента
Отладка композитных слоев
Без композиции
Отладка шагов CRP
Отладка шагов CRP
С композицией
Отладка шагов CRP
Отладка шагов CRP
Неявная композиция: один или несколько не-композитных элементов, которые по
z-index находятся выше композитного элемента, ...
1. opacity
2. transform
3. filter
Все остальные свойства могут вызывать обновление текстур
Слои для анимации. Дружелюбный ...
Пример с движущимся элементом
● left (постоянные перерисовки)
● translate (2 перерисовки)
● will-change (0 перерисовки)
Сл...
● Относитесь с GPU как к кешу
● Подготавливайте текстуры заранее
● Избегайте неявной композиции
Советы
28
Any questions?
vitalii.kalashnikov.37 vitalii-kalashnikov-
347382113
@V1pBoy
Как правильно делать анимацию и добиться 60fps на различных девайсах | OdessaFrontend Meetup #13
Как правильно делать анимацию и добиться 60fps на различных девайсах | OdessaFrontend Meetup #13
Как правильно делать анимацию и добиться 60fps на различных девайсах | OdessaFrontend Meetup #13
Как правильно делать анимацию и добиться 60fps на различных девайсах | OdessaFrontend Meetup #13
Upcoming SlideShare
Loading in …5
×

Как правильно делать анимацию и добиться 60fps на различных девайсах | OdessaFrontend Meetup #13

120 views

Published on

Анимация — неотъемлемая часть любого нынешнего веб-интерфейса. Виталий Калашников рассказывает про аппаратное ускорение анимаций, как использовать вычислительную технику при создании динамического веб-приложения. Как с его помощью заставить анимацию работать 60 кадров в секунду даже на мобильном устройстве и при этом не допустить падение браузера у пользователей. А также рассказывает про CSS vs JS анимации и сравнивает производительность.

Published in: Technology
  • Login to see the comments

  • Be the first to like this

Как правильно делать анимацию и добиться 60fps на различных девайсах | OdessaFrontend Meetup #13

  1. 1. Вступление
  2. 2. Давным давно…
  3. 3. - Скругленные рамки; - Тени блоков и тени текста; - Градиенты; - Множественные фоны; - Шрифты; - Анимация. Эволюция CSS
  4. 4. Критический путь рендеринга (CRP) После того, как браузер получает HTML ответ от сервера, проходит еще множество этапов перед отрисовкой пикселей на экране. Последовательность действий, которую должен пройти браузер для первичной отрисовки страницы, называется «путь критического рендеринга» или CRP.
  5. 5. 4. Композиция 1. Стили 2. Каркас 3. Отрисовка
  6. 6. Reflow/Repaint Reflow and repaint Repaint No reflow and repaint
  7. 7. Compositing 1. Страница делится на слои 2. Слои растеризируются 3. Слои выводятся на экран
  8. 8. GPU Accelerated Compositing
  9. 9. 1. Страница делится на слои 2. Слои растеризируются в текстуры 3. Текстуры загружаются в GPU 4. Compositor инструктирует GPU, как собрать конечное изображение GPU accelerated compositing GPU Accelerated Compositing
  10. 10. Слой (композитный слой) — часть страницы, поддерево DOM. Отрисовывается независимо, компонуется в GPU. Может растягиваться, перемещаться, скрываться (через прозрачность) без отрисовки. Paint — дорого Composite — дешево Слои
  11. 11. 1. 3D-трансформации: translate3d, translateZ и т.д. 2. Элементы <video>, <canvas>, <iframe> 3. Анимация через transform и opacity через CSS Transition Animation 4. position: fixed 5. will-change. 6. filter. Условия создания слоя
  12. 12. JS + Полный контроль + Синхронизируются с частотой обновления экрана - Забивают основной поток + Просты; + Свободны от основного потока + Синхронизируются с частотой обновления экрана CSS - Неконтролируемые: только пауза и запуск - Рассинхронизация JS vs CSS
  13. 13. В браузере откройте DevTools -> More tools и там выберите Layers. Этот пункт добавить в список инструментов еще один пункт слои. Отладка слоев
  14. 14. Перерисовка элемента
  15. 15. Отладка композитных слоев
  16. 16. Без композиции Отладка шагов CRP
  17. 17. Отладка шагов CRP
  18. 18. С композицией Отладка шагов CRP
  19. 19. Отладка шагов CRP
  20. 20. Неявная композиция: один или несколько не-композитных элементов, которые по z-index находятся выше композитного элемента, также становятся композитными, то есть отрисовываются в отдельное изображение, которое затем отправляется на GPU. Неявная композиция
  21. 21. 1. opacity 2. transform 3. filter Все остальные свойства могут вызывать обновление текстур Слои для анимации. Дружелюбный CSS
  22. 22. Пример с движущимся элементом ● left (постоянные перерисовки) ● translate (2 перерисовки) ● will-change (0 перерисовки) Слои для анимации
  23. 23. ● Относитесь с GPU как к кешу ● Подготавливайте текстуры заранее ● Избегайте неявной композиции Советы
  24. 24. 28 Any questions? vitalii.kalashnikov.37 vitalii-kalashnikov- 347382113 @V1pBoy

×