Библиотека Anime.js

28.02.2021 12:25:39

Anime.js (/ˈæn.ə.meɪ/) - это достаточно легкая библиотека анимации JavaScript с простым, но мощным API.
Она работает со свойствами CSS, SVG, атрибутами DOM и объектами JavaScript.


Решил познакомиться с библиотекой Anime.js. На одном из Youtube-каналов нашел ряд любопытных видео по реализации простейших методов из библиотеки.

На видео с канала, можно посмотреть пошаговую реализацию и итоговый результат.

Я решил пройти по шагам из данного видео и разобрать получившийся код. Готовую реализацию можно посмотреть по ссылке - Background Animation AnimeJS


Разберем код:

  • Создадим класс контейнер, куда будем добавлять созданные через JS элементы
  • Добавим также текст для отображения поверх анимации

<div class="container">
    <h2>Background Animation<br>AnimeJS</h2>
</div>
  • Создадим константу container и свяжем ее в DOM-дереве с классом .container
  • Запустим цикл for, в котором на каждой итерации, создадим элемент div с классом .block и добавим созданный блочный элемент в родительский элемент с классом .container

        const container = document.querySelector('.container');
        for (let i = 0; i <= 100; i++) {
            const blocks = document.createElement('div');
            blocks.classList.add('block');
            container.appendChild(blocks);
        }
  • На следующем шаге, создаем функцию animateBlocks, в которой будем организовывать обращение к библиотеке anime.js
  • Укажем тот селектор, к которому будем обращаться. В данном случае - это класс .block

        function animateBlocks() {
            anime({
                targets: '.block',
  • Дальше идет блок CSS преобразований (CSS Transforms)
  • Значения translateX (сдвиг по горизонтали), translateY (сдвиг по вертикали), scale (масштаб) меняют первоначальные точки размещения и размеры трансформируемого объекта

                translateX: () => {
                    return anime.random(-700, 700)
                },
                translateY: () => {
                    return anime.random(-500, 500)
                },
                scale: () => {
                    return anime.random(1, 5)
                },
  • easing - определяет временную функцию анимации.
  • duration - определяет продолжительность анимации в миллисекундах.
  • delay - определяет задержку анимации в миллисекундах.

                easing: 'linear',
                duration: 3000,
                delay: anime.stagger(10),
  • complete - рекурсивно вызываем эту же функцию после ее завершения.

                complete: animateBlocks,
            })
        }
  • Запускаем функцию на выполнение.

        animateBlocks();


С полной документацией, в которой можно найти массу примеров, можно ознакомиться по ссылке - Документация по Anime.js

Более расширенный вариант первого видео с использованием "сердечек", реализованных через CSS, можно посмотреть на этом видео.

Готовую реализацию можно посмотреть по ссылке - Hearts background AnimeJS

Возврат к списку