Как исправить производительность анимации?

Такие дела.

Есть код анимации:
if ( $('.landing__superdesign').length ) {
        let f = $('.landing__superdesign-f');
        let s = $('.landing__superdesign-s');
        let t = $('.landing__superdesign-t');

        let parallax = () => {
            let scrollTop = $('.wrap').scrollTop();
            f.css('transform', 'translateY(' + scrollTop/10 + 'px)');
            s.css('transform', 'translateY(' + -scrollTop/10 + 'px)');
            t.css('transform', 'rotate(' + (45 + scrollTop/10) + 'deg)');
            window.requestAnimationFrame(parallax);
        };
        window.requestAnimationFrame(parallax);
    }

три элемента, два движутся по вертикали, один крутится вокруг своей оси (элементы - простые фигуры: два прямоугольника и линия)

Но вот как только я начинаю скроллить страницу, макбук врубает кулеры, греется и страница слегка подлагивает.
Помимо этой анимации есть еще почти такая же только для фоновой картинки - она движется по горизонтали с помощью backgriund-position. Без анимированных фигур страница не фризит, с фигурами уже начинается боль.

Что не так и как облегчить анимацию?
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
twobomb
@twobomb
А зачем 60 раз в секунду крутить эту функцию? Нельзя повесить на какое нибудь событие скролла или т.п.? Параметры то вроде бы не изменяются.
Типа такого
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы