Я смотрел несколько потрясающих анимаций в Интернете, и мне внезапно пришла в голову мысль — стоит ли нам делать анимацию на CSS или на JavaScript? И, что, возможно, более важно, как это влияет на производительность? 🤔

Итак, для начала давайте поговорим о CSS. В CSS есть два основных игрока, которые могут помочь вам с анимацией.

CSS-переходы:

С их помощью очень легко transitions плавно transitions перевести элемент из одного стиля в другой. Плюс, что интересно, даже если элемент находится в середине перехода, новый просто возобновляет работу с того места, где он остановился.

CSS-анимации:

С другой стороны, у нас есть CSS animations. Это позволит вам проявить творческий подход. Вы можете анимировать между набором начальных значений свойств и окончательным набором. Это похоже на постановку танца для элементов вашего сайта.

запросАнимацияФрейм:

Теперь вот здесь на сцену выходит JavaScript. requestAnimationFrame() — очень эффективный трюк JavaScript. Это похоже на переход за кулисы цикла рендеринга браузера. В отличие от методов старой школы setTimeout() или setInterval(), которым требуются определенные интервалы времени, requestAnimationFrame() вызывает функцию обратного вызова непосредственно перед следующей перерисовкой. Это означает, что вы можете обновить стиль элемента в полной гармонии с рендерингом браузера.

Противостояние производительности: CSS против requestAnimationFrame()

Теперь поговорим о производительности. CSS-анимация и анимация JavaScript могут быть одинаковыми (по крайней мере, в Firefox).

Анимации обычно обрабатываются в потоке, известном как «поток композитора». Это отличается от «основного потока» браузера (где выполняются стили, макет, рисование и JavaScript). Это означает, что если браузер выполняет какие-то ресурсоемкие задачи в основном потоке, эти анимации могут продолжаться без прерывания.

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

Итак, когда анимация (CSS/JS) используется (или запускает отрисовку, макет или и то, и другое), разницы в производительности нет.

В двух словах:

Итак, каков итог 🤔🤔🤔?

Браузеры умны, они умеют оптимизировать. Как правило, старайтесь придерживаться CSS-переходов и анимации, когда можете. Они надежны, широко поддерживаются и могут бесперебойно выполнять свою работу.

Но вот что самое интересное: если вы готовите анимацию, столь же сложную, как секретный рецепт торта, тогда, друг мой, анимация на основе JavaScript может быть хорошим выбором.

Мораль истории? Выбирайте инструмент анимации с умом, исходя из потребностей вашего проекта 😎✨

Надеюсь, вы прекрасно провели время, читая это. Продолжай учиться! 📚✨