Для начала требуется подключить библиотеку Vivus. Самый простой способ — использовать CDN:
<script src="https://cdn.jsdelivr.net/npm/vivus@latest/dist/vivus.min.js"></script>
После подключения становится доступен глобальный конструктор
Vivus, через который создаются анимации SVG.
Vivus работает только с векторной графикой в формате SVG, причём
анимация строится на основе обводок (stroke). Заливки
(fill) не участвуют в процессе «рисования».
Простейший SVG-пример:
<svg id="my-svg" viewBox="0 0 200 200">
<path d="M10 10 L190 10 L190 190 L10 190 Z"
stroke="black"
fill="none"
stroke-width="2"/>
</svg>
Ключевые моменты:
id обязателен для привязки анимацииfill="none" — убирает заливкуstroke задаёт линию, которая будет анимироватьсяpath), тем предсказуемее результатСоздание анимации выполняется через вызов конструктора
Vivus:
<script>
new Vivus('my-svg');
</script>
Аргумент — это id SVG-элемента.
После выполнения скрипта SVG будет «нарисован» автоматически.
Vivus имитирует процесс рисования, управляя свойствами SVG:
stroke-dasharraystroke-dashoffsetБиблиотека вычисляет длину каждого пути и постепенно уменьшает смещение, создавая эффект появления линии.
Vivus поддерживает несколько типов анимации. Они определяют порядок прорисовки элементов.
Пример с указанием типа:
new Vivus('my-svg', {
type: 'delayed'
});
Основные типы:
Длительность анимации задаётся через параметр
duration:
new Vivus('my-svg', {
duration: 200
});
Особенности:
Параметр start определяет, когда начинается
анимация:
new Vivus('my-svg', {
start: 'autostart'
});
Варианты:
Пример ручного запуска:
var anim = new Vivus('my-svg', { start: 'manual' });
// запуск позже
anim.play();
Vivus позволяет выполнить функцию после окончания анимации:
new Vivus('my-svg', {}, function () {
console.log('Анимация завершена');
});
Колбэк полезен для:
Экземпляр Vivus предоставляет методы управления:
var anim = new Vivus('my-svg', { start: 'manual' });
anim.play(); // запуск
anim.stop(); // остановка
anim.reset(); // сброс
anim.finish(); // мгновенное завершение
Также можно управлять скоростью:
anim.play(2); // ускорение
anim.play(-1); // обратная анимация
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vivus@latest/dist/vivus.min.js"></script>
</head>
<body>
<svg id="my-svg" viewBox="0 0 200 200">
<path d="M10 10 L190 10 L190 190 L10 190 Z"
stroke="black"
fill="none"
stroke-width="2"/>
</svg>
<script>
new Vivus('my-svg', {
type: 'oneByOne',
duration: 150
});
</script>
</body>
</html>
Отсутствие stroke
<path fill="black" />
Vivus не анимирует заливку — только линии.
Сложные SVG из редакторов
SVG из Figma, Illustrator или Inkscape часто содержат:
<g>)Рекомендуется оптимизировать SVG:
pathОтсутствие viewBox
Без viewBox масштабирование и анимация могут работать
некорректно.
После освоения простейшего примера возможно:
Базовый принцип остаётся неизменным: Vivus управляет отрисовкой линий SVG, превращая статичную графику в динамическую анимацию.