Корректная работа с библиотекой Lottie Web начинается на этапе
экспорта анимации из Adobe After Effects через плагин Bodymovin. От
выбранных настроек зависит не только внешний вид, но и
производительность, размер файла и совместимость.
Основные параметры экспорта
1. Формат вывода (JSON) Lottie использует JSON-файл,
содержащий описание анимации. В процессе экспорта формируется структура
данных, описывающая ключевые кадры, слои, трансформации и эффекты.
2. Выбор композиции При экспорте можно указать одну
или несколько композиций. Рекомендуется:
- избегать вложенных композиций без необходимости
- минимизировать глубину вложенности
3. Destination (путь сохранения) Файл должен
сохраняться в директорию проекта, где он будет доступен для загрузки в
браузере. Часто используется структура:
/assets/animations/
4. Include in JSON
- Assets — встраивание изображений напрямую в JSON
(base64)
- Glyphs — преобразование текста в векторные
данные
Выбор влияет на размер файла и скорость загрузки.
Работа с изображениями
Встраивание (inline) vs
отдельные файлы
Inline (base64):
- увеличивает размер JSON
- упрощает подключение (один файл)
- снижает количество HTTP-запросов
Отдельные файлы:
- уменьшает размер JSON
- позволяет кэшировать изображения
- требует корректного пути к ресурсам
Оптимальный подход:
- маленькие изображения → inline
- крупные изображения → отдельные файлы
Оптимизация анимации в
After Effects
Минимизация слоев
Каждый слой в After Effects превращается в объект в JSON. Большое
количество слоев:
- увеличивает размер файла
- снижает производительность
Рекомендуется:
- объединять слои
- удалять скрытые или неиспользуемые элементы
- избегать дублирования
Упрощение ключевых кадров
Избыточное количество ключевых кадров приводит к:
- увеличению размера JSON
- нагрузке на CPU при интерполяции
Методы оптимизации:
- использование easing вместо частых ключей
- удаление промежуточных кадров
- применение выражений (expressions) вместо анимации каждого
параметра
Ограничение эффектов
Lottie поддерживает не все эффекты After Effects. Некоторые из
них:
- игнорируются
- рендерятся некорректно
- сильно нагружают браузер
Рекомендуется избегать:
- сложных blur-эффектов
- glow
- 3D-эффектов
Предпочтение:
- простая трансформация (position, scale, rotation)
- opacity
- shape-анимации
Оптимизация векторной
графики
Упрощение path-объектов
Сложные векторные пути (paths):
- увеличивают JSON
- замедляют отрисовку
Решения:
- уменьшение количества точек
- использование простых форм
- оптимизация через Illustrator (Object → Path → Simplify)
Использование shape layers
Shape layers предпочтительнее:
- быстрее рендерятся
- лучше поддерживаются Lottie
- занимают меньше места
Избегать:
- импортированных сложных SVG без оптимизации
Настройки Bodymovin
Glyphs vs Text
Glyphs (векторный текст):
- независимость от шрифтов
- увеличенный размер JSON
Text (динамический):
- меньший размер
- требует наличия шрифта
Выбор зависит от задачи:
- UI-анимации → Text
- брендированные элементы → Glyphs
Progressive Loading
Позволяет загружать анимацию частями. Особенно полезно для:
- длинных анимаций
- сложных сцен
Hidden Layers
Опция исключения скрытых слоев:
- уменьшает размер JSON
- предотвращает лишние вычисления
Оптимизация на стороне
JavaScript
Использование renderer
Lottie поддерживает три рендерера:
SVG
- лучшее качество
- подходит для UI
- медленнее при сложных сценах
Canvas
- высокая производительность
- хуже масштабируется
HTML
- ограниченные возможности
- редко используется
Выбор:
renderer: 'svg' // по умолчанию
или для производительности:
renderer: 'canvas'
Lazy Loading
Анимации не должны загружаться сразу:
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
animation.play();
}
});
});
Преимущества:
- экономия ресурсов
- ускорение загрузки страницы
Управление частотой кадров
Снижение FPS:
- уменьшает нагрузку
- практически незаметно для пользователя
В After Effects:
Сжатие JSON
Минификация
Перед использованием:
- удалить пробелы
- сократить ключи (если возможно)
Инструменты:
- JSON minifier
- сборщики (Webpack, Vite)
Gzip / Brotli
Сжатие на сервере:
- уменьшает размер передачи до 70–90%
- критично для мобильных устройств
Кэширование
HTTP-кэш
Настройка заголовков:
Cache-Control: max-age=31536000
Позволяет:
- не загружать анимацию повторно
- ускорить рендер
CDN
Размещение на CDN:
- ускоряет доставку
- снижает нагрузку на сервер
Разделение анимаций
Большие анимации следует разбивать:
- на несколько файлов
- по логическим блокам
Преимущества:
- выборочная загрузка
- улучшенная производительность
Работа с памятью
Уничтожение анимаций
После использования:
animation.destroy();
Это:
- освобождает память
- предотвращает утечки
Переиспользование
Если анимация повторяется:
- не создавать заново
- использовать одну инстанцию
Проверка производительности
Инструменты браузера позволяют:
- анализировать FPS
- выявлять узкие места
- отслеживать загрузку CPU
Тестирование на слабых
устройствах
Критически важно:
- проверять на мобильных
- учитывать старые браузеры
Практические рекомендации
- избегать сложных масок и blending modes
- минимизировать прозрачность и overlap
- ограничивать длительность анимации
- использовать повторяющиеся элементы (loop) вместо длинных сцен
- проверять итоговый JSON перед использованием
Типичные ошибки
1. Слишком большой JSON (>1MB) Причина: сложная
графика, изображения inline
2. Низкий FPS в браузере Причина: слишком много
слоев или сложные path
3. Некорректный рендер Причина: неподдерживаемые
эффекты
4. Долгая загрузка Причина: отсутствие сжатия и
кэширования
Баланс качества и
производительности
Оптимальная анимация:
- весит до 200–300 KB (в сжатом виде)
- содержит минимальное количество слоев
- не использует сложные эффекты
- стабильно работает при 30 FPS
При грамотной настройке экспорта и оптимизации Lottie Web
обеспечивает высокое качество анимации при минимальной нагрузке на
систему.