Морфинг path в anime.js позволяет плавно анимировать переход одной
SVG-фигуры в другую, изменяя атрибут d элементов
. Этот приём широко используется для сложной
графики и динамических интерфейсов, где необходимо создать впечатление
«живой» формы.
Для работы с морфингом важно, чтобы обе SVG-фигуры имели одинаковое количество команд и совпадающий порядок точек. Несоблюдение этого правила приводит к некорректной анимации или её отсутствию.
anime({
targets: 'path',
d: [
{ value: 'M50,50 C60,60 140,60 150,50 C160,40 140,140 100,100 C60,60 40,40 50,50 Z' }
],
duration: 2000,
easing: 'easeInOutQuad',
loop: true,
direction: 'alternate'
});
Совпадение точек Для корректного морфинга каждая
команда M, C, L и так далее
должна иметь аналог в целевом path. Если исходный path имеет 3 сегмента,
а целевой — 5, анимация будет искажена.
Использование библиотек для синхронизации path Иногда path создаются вручную и имеют разное количество сегментов. Для упрощения процесса используют инструменты вроде Shape Shifter, которые нормализуют количество точек.
Атрибут fill и морфинг Анимация
d не затрагивает цвет. Для изменения цвета одновременно с
формой можно анимировать fill:
anime({
targets: 'path',
d: [{ value: 'M70,70 C90,40 110,40 130,70 C150,100 110,130 100,100 C90,70 50,90 70,70 Z' }],
fill: '#4CAF50',
duration: 2500,
easing: 'easeInOutSine'
});
translate,
rotate, scale. Для этого достаточно добавить
несколько свойств в объект anime():anime({
targets: 'path',
d: [{ value: 'M80,80 C100,50 120,50 140,80 C160,110 120,140 100,120 C80,100 60,100 80,80 Z' }],
translateX: 50,
rotate: '45deg',
duration: 3000,
easing: 'easeInOutExpo'
});
will-change: transform на контейнере
, чтобы браузер оптимизировал рендер.requestAnimationFrame или уменьшить
количество сегментов.Анимация path в anime.js поддерживает различные кривые интерполяции:
linear — равномерная скорость между ключевыми
точкамиeaseInOutQuad — плавное ускорение и замедлениеeaseOutElastic — эластичное «отпружинивание»anime({
targets: 'path',
d: [{ value: 'M90,90 C110,60 130,60 150,90 C170,120 130,150 100,130 C70,110 50,110 90,90 Z' }],
duration: 3500,
easing: 'easeOutElastic(1, .8)'
});
Морфинг path можно использовать для анимации масок или
clip-path, создавая динамические эффекты появления и
исчезновения элементов. Пример для clip-path:
div {
width: 200px;
height: 200px;
background: #2196F3;
clip-path: path('M50,50 C70,20 130,20 150,50 C170,80 130,120 100,100 C70,80 30,80 50,50 Z');
}
anime({
targets: 'div',
clipPath: [
{ value: 'path("M60,60 C80,30 120,30 140,60 C160,90 120,130 100,110 C80,90 40,90 60,60 Z")' }
],
duration: 2000,
easing: 'easeInOutQuad'
});
Для интерактивных эффектов можно генерировать path программно, например используя массивы координат и функции для вычисления кривых. Это позволяет создавать анимации, где форма зависит от данных или действий пользователя.
function createPath(radius) {
return `M${radius},50 C${radius+20},20 ${radius+80},20 ${radius+100},50 C${radius+120},80 ${radius+80},120 100,100 C80,80 20,80 ${radius},50 Z`;
}
anime({
targets: 'path',
d: [{ value: createPath(60) }],
duration: 2500,
easing: 'easeInOutQuad'
});