В anime.js анимация клиппинга и масок осуществляется
через манипуляцию свойств CSS и SVG. Для эффективного использования этих
техник важно понимать разницу между CSS-клиппингом и
SVG-масками и особенности их применения в анимации.
CSS-клиппинг позволяет ограничивать видимую область элемента с
помощью свойств clip или clip-path. Наиболее
современный и гибкий способ — использование clip-path.
Пример базового клиппинга через
clip-path:
anime({
targets: '.box',
clipPath: ['circle(0% at 50% 50%)', 'circle(50% at 50% 50%)'],
easing: 'easeOutQuad',
duration: 1500
});
Разбор ключевых моментов:
targets — элементы, к которым применяется
анимация.clipPath — задаёт начальное и конечное значения маски в
виде формы (circle, ellipse,
polygon).Особенности использования CSS-клиппинга:
circle, но и
ellipse, polygon, inset.SVG-маски позволяют создавать более сложные визуальные эффекты, так
как поддерживают прозрачность и градиенты. Маска задаётся с помощью
элемента и свойства mask на
целевом элементе.
Пример использования SVG-маски с anime.js:
anime({
targets: 'circle',
r: 100,
easing: 'easeOutCubic',
duration: 2000
});
Разбор:
translate, scale,
rotate для сложных эффектов.Для сложных форм, таких как многоугольники или пути SVG,
anime.js позволяет анимировать атрибут d у
или координаты точек в
polygon.
Пример анимации полигона через CSS:
anime({
targets: '.polygon',
clipPath: ['polygon(50% 0%, 100% 100%, 0% 100%)', 'polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)'],
easing: 'easeInOutSine',
duration: 1800
});
Пошаговое управление:
begin — функция вызывается в начале анимации.update — позволяет модифицировать значения в процессе
анимации.complete — выполняется после окончания.anime({
targets: '.box',
clipPath: ['circle(0% at 50% 50%)', 'circle(40% at 50% 50%)'],
duration: 2000,
easing: 'easeOutExpo',
update: function(anim) {
console.log(anim.progress + '%');
}
});
Преимущества такого подхода:
Анимации клиппинга и масок можно комбинировать с:
opacity для плавного появления.transform (scale, translate,
rotate) для динамического эффекта движения.stroke-dasharray и stroke-dashoffset для
эффекта прорисовки линий через маску.anime({
targets: '.circle-mask',
r: [0, 80],
opacity: [0, 1],
easing: 'easeOutQuad',
duration: 1500
});
Такой подход позволяет создавать сложные и визуально выразительные переходы элементов на странице.