В anime.js анимация transform-свойств является одним
из наиболее мощных инструментов для динамического управления положением,
размером и формой элементов. Под transform понимаются такие
CSS-свойства, как translate, rotate,
scale, skew и их комбинации. Они позволяют
создавать плавные и аппаратно ускоренные анимации без изменения layout
документа.
Свойства translateX, translateY и
translateZ отвечают за смещение элемента по осям. В
anime.js их можно анимировать следующим образом:
anime({
targets: '.box',
translateX: 250,
translateY: 100,
duration: 2000,
easing: 'easeInOutQuad'
});
'50%'.linear, easeInOutQuad, spring и
др.).Можно комбинировать несколько transform-свойств одновременно:
anime({
targets: '.circle',
translateX: 200,
translateY: 50,
rotate: '1turn',
duration: 3000,
easing: 'easeInOutSine'
});
Свойство rotate принимает значения в градусах
('45deg') или полный оборот ('1turn').
anime({
targets: '.arrow',
rotate: '180deg',
duration: 1500,
easing: 'easeOutExpo'
});
rotate: ['0deg', '720deg']
anime({
targets: '.star',
rotate: el => el.dataset.angle + 'deg',
duration: 2000
});
scale, scaleX и scaleY
управляют размером элемента. scale изменяет одновременно по
обеим осям, scaleX и scaleY — по
отдельной.
anime({
targets: '.button',
scale: [1, 1.5],
duration: 1000,
easing: 'easeInOutBack'
});
[начальное, конечное].anime({
targets: '.icon',
translateY: 50,
scale: 1.2,
rotate: '45deg',
duration: 1200
});
Свойства skewX и skewY изменяют перспективу
элемента, создавая эффект наклона. Значения задаются в градусах:
anime({
targets: '.panel',
skewX: '30deg',
skewY: '15deg',
duration: 800,
easing: 'easeInOutQuad'
});
skew часто используется для динамичных интерфейсных
эффектов при наведении или переходах.anime.js позволяет комбинировать несколько transform-свойств в одной анимации, создавая комплексные движения:
anime({
targets: '.card',
translateX: 100,
translateY: 50,
rotate: '1turn',
scale: 1.2,
skewX: '10deg',
duration: 2000,
easing: 'easeInOutCubic'
});
anime({
targets: '.dot',
translateX: (el, i) => i * 30,
rotate: () => anime.random(0, 360) + 'deg',
duration: 1500
});
Для создания цепочек анимаций transform используется
anime.timeline:
const tl = anime.timeline({
easing: 'easeInOutSine',
duration: 500
});
tl.add({
targets: '.box',
translateX: 250
})
.add({
targets: '.box',
rotate: '1turn',
scale: 1.5
})
.add({
targets: '.box',
translateY: 100
});
offset.offset для
перекрытия анимаций.Использование transform-свойств в anime.js обеспечивает аппаратное ускорение, так как CSS-трансформации обычно выполняются GPU, а не CPU. Это позволяет:
translateX и translateY, а не
left и top.translate,
rotate, scale и skew в одной
анимации.transform с другими
стилями, чтобы избежать неожиданных перекрытий.