Основной метод инициализации анимаций Lottie Web реализуется через
lottie.loadAnimation. Он создаёт экземпляр анимации,
привязывает его к DOM-контейнеру и запускает процесс загрузки
данных.
const animation = lottie.loadAnimation(config);
Метод возвращает объект анимации, через который осуществляется управление воспроизведением, состоянием и жизненным циклом.
loadAnimation принимает единый объект конфигурации,
определяющий источник данных, способ рендеринга и поведение
анимации.
container DOM-элемент, в который будет отрисована анимация.
container: document.getElementById('lottie')
Контейнер должен быть реальным элементом DOM. Lottie вставляет внутрь него SVG, Canvas или HTML-разметку в зависимости от выбранного рендерера.
renderer Определяет механизм отрисовки:
svg — векторная отрисовка, основной и наиболее
распространённый вариантcanvas — отрисовка через Canvas APIhtml — DOM-based рендеринг (используется редко)renderer: 'svg'
SVG-рендерер обеспечивает наилучшее качество при масштабировании и поддержку большинства эффектов After Effects.
loop Управляет повторением анимации:
loop: true
Возможные значения:
true — бесконечный циклfalse — проигрывание один разautoplay Автоматический запуск после загрузки:
autoplay: true
При значении false анимация загружается, но не
запускается до явного вызова метода play().
path Путь к JSON-файлу анимации, экспортированному из After Effects через Bodymovin.
path: '/animations/loader.json'
Файл загружается асинхронно через HTTP-запрос.
animationData Альтернатива path.
Позволяет передать уже загруженный JSON-объект.
animationData: {
v: "5.7.4",
fr: 30,
ip: 0,
op: 60,
layers: []
}
Используется в случаях, когда данные анимации предварительно получены через API или импортированы в сборку.
name Идентификатор анимации внутри Lottie-сессии.
name: 'preloader'
Позволяет управлять несколькими анимациями через глобальные методы Lottie.
rendererSettings Дополнительные параметры рендеринга, зависящие от выбранного движка.
Пример для SVG:
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice',
clearCanvas: true,
progressiveLoad: false,
hideOnTransparent: true
}
const animation = lottie.loadAnimation({
container: document.getElementById('lottie'),
renderer: 'svg',
loop: true,
autoplay: true,
path: '/animations/data.json'
});
Наиболее распространённый сценарий — загрузка JSON-файла по HTTP. В этом режиме библиотека самостоятельно выполняет fetch-запрос, парсит данные и строит сцену.
Процесс включает:
autoplay)animationDataПри работе в сборках или при предварительной загрузке данных через API используется прямое внедрение JSON.
fetch('/api/animation')
.then(res => res.json())
.then(data => {
lottie.loadAnimation({
container: document.getElementById('lottie'),
renderer: 'svg',
loop: true,
autoplay: true,
animationData: data
});
});
Этот режим исключает сетевую задержку внутри Lottie и позволяет полностью контролировать процесс загрузки.
Создаёт DOM-структуру из <svg>,
<g>, <path>,
<defs>. Каждый кадр обновляет атрибуты элементов.
Особенности:
Использует 2D-контекст для отрисовки кадров.
Особенности:
Генерирует DOM-элементы для каждого слоя.
Особенности:
Результат loadAnimation — экземпляр с набором методов
управления.
animation.play();
animation.pause();
animation.stop();
animation.setSpeed(2); // в 2 раза быстрее
animation.goToAndPlay(10, true);
animation.goToAndStop(30, true);
Первый аргумент — кадр, второй — использование индексации (true — кадры, false — секунды).
При инициализации через loadAnimation проходит несколько
стадий:
Создаётся внутренний root-элемент, очищается контейнер.
При использовании path выполняется HTTP-запрос.
Проверяется структура: слои, тайминг, ключевые кадры.
Создаются внутренние представления слоёв и свойств.
Выполняется первичная отрисовка.
Активируется requestAnimationFrame цикл.
Экземпляр анимации поддерживает события:
animation.addEventListener('data_ready', () => {});
animation.addEventListener('DOMLoaded', () => {});
animation.addEventListener('complete', () => {});
animation.addEventListener('loopComplete', () => {});
Срабатывает после построения DOM-структуры.
Срабатывает после загрузки и парсинга JSON.
Срабатывает после завершения проигрывания (если
loop = false).
Типовые причины проблем при loadAnimation:
Некорректный путь
Повреждённый JSON
layers, fr,
ip, op)Несовместимость версий
const config = {
container: document.getElementById('lottie'),
renderer: 'svg',
loop: true,
autoplay: false
};
if (window.useLocalData) {
config.animationData = window.animationJSON;
} else {
config.path = '/assets/animation.json';
}
const animation = lottie.loadAnimation(config);
Повторный вызов loadAnimation в одном и том же
контейнере без очистки приводит к наложению рендеров. Корректное
поведение требует уничтожения предыдущего экземпляра:
animation.destroy();
После уничтожения освобождаются ресурсы, удаляются обработчики событий и очищается DOM-контейнер.