В библиотеке anime.js масштабирование объектов
осуществляется через свойство scale. Оно позволяет изменять
размер HTML-элементов, SVG или Canvas-графики по осям X и Y, создавая
эффект увеличения или уменьшения без изменения исходной структуры
DOM.
Для базового масштабирования используется объект анимации:
anime({
targets: '.box',
scale: 1.5,
duration: 1000,
easing: 'easeInOutQuad'
});
Пояснения:
targets – элемент или набор элементов, к которым
применяется анимация. Может быть селектором, массивом элементов или
объектом DOM.scale – величина масштабирования. 1
означает исходный размер, 1.5 — увеличение на 50%,
0.5 — уменьшение до половины.duration – продолжительность анимации в
миллисекундах.easing – функция сглаживания перехода, определяющая
характер ускорения и замедления анимации.Для независимого управления горизонтальным и вертикальным масштабом
используются свойства scaleX и scaleY:
anime({
targets: '.box',
scaleX: 2,
scaleY: 0.5,
duration: 1200,
easing: 'easeOutElastic(1, .8)'
});
Особенности:
scaleX — масштаб по горизонтали.scaleY — масштаб по вертикали.scale, значения scaleX
и scaleY синхронизируются автоматически.Для создания эффекта изменения масштаба с конкретного начального
значения используется объект keyframes или свойства
value:
anime({
targets: '.box',
scale: [
{ value: 0.5, duration: 500 },
{ value: 1.5, duration: 700 },
{ value: 1, duration: 300 }
],
easing: 'easeInOutSine'
});
Особенности:
value) задает промежуточный
масштаб.duration внутри массива определяет продолжительность
каждой фазы анимации.keyframes позволяет создавать сложные
последовательные трансформации.Для повторяющейся анимации применяется свойство loop и
direction:
anime({
targets: '.box',
scale: 1.5,
direction: 'alternate',
loop: true,
duration: 800,
easing: 'easeInOutQuad'
});
direction: 'alternate' — объект возвращается к
исходному масштабу после завершения цикла.loop: true — бесконечное повторение анимации. Можно
также задать число повторов (loop: 3).Свойства delay и stagger позволяют
создавать цепочки анимаций для нескольких элементов:
anime({
targets: '.box',
scale: 1.5,
delay: anime.stagger(200),
duration: 600,
easing: 'easeOutElastic(1, .6)'
});
anime.stagger(200) — задержка между запуском анимации у
разных элементов.Anime.js поддерживает одновременное комбинирование scale
с translate, rotate и
opacity:
anime({
targets: '.box',
scale: 1.3,
rotate: '1turn',
translateX: 250,
opacity: 0.5,
duration: 1200,
easing: 'easeInOutCubic'
});
Для SVG-объектов свойства scale, scaleX и
scaleY работают аналогично, но важно учитывать атрибут
transform-origin для контроля точки масштабирования:
anime({
targets: 'svg circle',
scale: 2,
transformOrigin: '50% 50%',
duration: 800,
easing: 'easeInOutQuad'
});
transformOrigin — определяет центр масштабирования
относительно элемента (center, top left, или в
процентах).Значение свойства scale может быть функцией,
возвращающей разные величины для каждого элемента:
anime({
targets: '.box',
scale: function(el, i) {
return 1 + i * 0.2;
},
duration: 1000,
easing: 'easeInOutQuad'
});
el — текущий элемент.i — индекс элемента в наборе.scale для симметричного изменения размера,
scaleX и scaleY для асимметричного.keyframes для сложных последовательных
анимаций.transformOrigin.loop, direction и
stagger для создания динамичных визуальных эффектов.Масштабирование в anime.js является мощным инструментом, позволяющим создавать как простые, так и сложные анимации изменения размеров объектов, с высокой гибкостью настройки и управлением синхронизацией элементов.