Синхронный режим анимации в Vivus характеризуется одновременным воспроизведением отрисовки всех путей SVG-изображения. В отличие от последовательного подхода, при котором элементы активируются поочередно, здесь все контуры начинают и завершают анимацию в одном временном интервале, создавая эффект равномерного «проявления» графики.
SVG-изображение в Vivus разбивается на отдельные пути
(<path>), каждый из которых может быть анимирован за
счёт изменения параметров stroke-dasharray и
stroke-dashoffset. В синхронном режиме все пути получают
одинаковую временную шкалу анимации, независимо от их положения в DOM
или последовательности описания.
Ключевая особенность заключается в том, что общее время анимации распределяется одновременно на все элементы, а не делится между ними. Это приводит к тому, что визуально изображение «проявляется» целиком, без эффекта очередности.
В библиотеке Vivus выбор режима осуществляется через параметр
type при инициализации экземпляра:
new Vivus('svg-element', {
type: 'sync',
duration: 200,
start: 'autostart',
dashGap: 2,
forceRender: false
});
Параметр type: 'sync' активирует синхронную стратегию
отрисовки. Остальные параметры влияют на скорость, запуск и особенности
рендеринга, но не изменяют принцип одновременного воспроизведения.
При использовании синхронного режима Vivus вычисляет длину каждого пути и нормализует процесс анимации так, чтобы все элементы завершили отрисовку одновременно.
Процесс включает следующие этапы:
path внутри SVGduration)stroke-dashoffset для всех
путейТаким образом, различия в длине контуров компенсируются скоростью их отрисовки.
В сложных иллюстрациях, содержащих десятки или сотни путей, синхронный режим обеспечивает визуальную целостность. Все элементы проявляются равномерно, без визуальных задержек между отдельными сегментами.
Однако при большом количестве мелких деталей может возникать эффект «шумовой» анимации, поскольку отсутствует структурированная последовательность появления форм.
Особенно это заметно в:
Vivus поддерживает несколько типов анимации, каждый из которых задаёт различную логику обработки путей.
Синхронный режим следует отличать от последовательного
(oneByOne), где элементы анимируются друг за другом. В
отличие от него, здесь отсутствует очередь выполнения.
В режиме delayed используется комбинированный подход,
при котором каждый путь получает небольшую задержку, создавая каскадный
эффект. Синхронный вариант полностью исключает задержки между
элементами.
Параметр duration в синхронном режиме определяет общее
время анимации всей SVG-композиции.
new Vivus('icon', {
type: 'sync',
duration: 120
});
Уменьшение значения приводит к ускоренному проявлению всей графики, увеличение — к более плавной и медленной визуализации.
Важно учитывать, что изменение длительности влияет сразу на все элементы, так как они связаны общей временной шкалой.
Синхронный режим чувствителен к архитектуре SVG-файла. Основные факторы, влияющие на итоговую визуализацию:
<g>)При равномерной структуре изображение проявляется гладко. При неоднородной геометрии возможны участки с визуально разной плотностью прорисовки, несмотря на одинаковую временную базу.
Для стабильной работы синхронного режима часто применяется предварительная подготовка SVG:
Такая оптимизация уменьшает нагрузку на вычисление длины контуров и повышает плавность анимации.
Vivus пересчитывает параметры анимации при инициализации. Если SVG изменяется динамически после создания экземпляра, требуется повторный запуск или пересоздание объекта. В синхронном режиме это особенно важно, так как перерасчёт длины путей влияет на согласованность анимации.
Синхронная стратегия используется там, где требуется единое визуальное появление графического объекта без акцента на отдельных деталях:
Отсутствие последовательности делает визуальный эффект более цельным и спокойным, без акцентирования структуры рисунка.