Порядок рисования слоев рендеринга:
- макет слоя
- слой краски
- композитный слой
Перерисовка в слое вызовет перерисовку в последующих слоях.
Изменение left
или margin
вызовет перерисовку в слое макета (что, в свою очередь, вызовет перерисовку в двух других слоях) для анимированного элемента и для последующих элементов в ДОМ .
Изменение transform
вызовет перерисовку в слое композитора только для анимированного элемента (последующие элементы в DOM не будут перерисовываться).
Разница в производительности (следовательно, в кадрах в секунду или, проще говоря, в плавности анимации) экспоненциальная. Использование первого метода часто приводит к дрожанию анимации даже на хороших машинах (когда процессор занят), тогда как второй, скорее всего, будет работать гладко даже в системах с ограниченными ресурсами.
Еще одним преимуществом использования transform
s является то, что перерисовки композитора сильно оптимизированы (анимация для нескольких элементов приводит к одной перерисовке для всех), в то время как изменение слоя макета будет вызывать перерисовку после каждого изменения каждого элемента.
Для более подробного объяснения методов рендеринга и производительности рендеринга я рекомендую Веб-основы Google .