Библиотека cash предоставляет компактный и удобный API для работы с DOM, аналогичный jQuery, что делает её идеальной для интеграции с различными библиотеками анимации, такими как GSAP, Anime.js или Velocity.js. Основная цель интеграции — использовать методы cash для выбора элементов и управления ими, одновременно передавая эти элементы анимационным функциям.
Cash использует CSS-селекторы для поиска элементов в DOM:
const boxes = $('.box'); // выбор всех элементов с классом box
Важно понимать, что cash возвращает объект, подобный массиву, содержащий элементы DOM. Для большинства анимационных библиотек можно передавать этот объект напрямую, поскольку библиотеки обычно ожидают либо DOM-элемент, либо NodeList.
// Пример передачи элементов в GSAP
gsap.to(boxes, { x: 100, duration: 1 });
В этом примере cash обеспечивает удобное управление коллекцией элементов, а GSAP выполняет анимацию.
Для тонкой настройки анимации иногда требуется пройтись по каждому
элементу отдельно. Cash предоставляет метод .each():
boxes.each((index, el) => {
anime({
targets: el,
translateY: 50,
duration: 500,
delay: index * 100
});
});
index — порядковый номер элемента в коллекции.el — сам DOM-элемент.Использование .each() позволяет комбинировать cash с
любыми библиотеками, обеспечивая гибкость при управлении анимацией.
Многие анимационные библиотеки опираются на состояние элемента, которое может задаваться через классы или inline-стили. Cash предоставляет удобные методы для этих операций:
boxes.addClass('active'); // добавление класса
boxes.removeClass('inactive'); // удаление класса
boxes.css({
opacity: 0,
transform: 'translateX(-50px)'
});
Это позволяет заранее подготовить элементы для анимации или создать эффекты, комбинируя CSS-анимации с JS-анимациями.
Cash облегчает работу с событиями, что особенно полезно для анимаций, зависящих от пользовательских действий:
$('#startButton').on('click', () => {
boxes.each((i, el) => {
gsap.to(el, { y: 100, rotation: 360, duration: 1 });
});
});
Методы .on() и .off() позволяют гибко
управлять обработчиками событий, создавая сложные сценарии анимации.
Cash поддерживает цепочки методов, что облегчает последовательное выполнение операций перед анимацией:
boxes
.addClass('highlight')
.css({ opacity: 0 })
.each((i, el) => {
anime({
targets: el,
opacity: 1,
translateY: 20,
duration: 700,
delay: i * 100
});
});
Такая структура улучшает читаемость кода и делает управление анимациями более наглядным.
GSAP — одна из самых мощных библиотек для анимации, и cash обеспечивает удобную работу с её API:
const elements = $('.card');
gsap.from(elements, {
y: 50,
opacity: 0,
stagger: 0.2,
duration: 1
});
stagger позволяет создавать последовательные анимации
для коллекций элементов.from() и to() методы GSAP поддерживают
любые DOM-элементы, включая коллекции cash.Anime.js требует передачи DOM-элементов или селекторов:
anime({
targets: $('.circle').get(), // .get() преобразует объект cash в массив
scale: [0, 1],
delay: anime.stagger(100),
duration: 800,
easing: 'easeOutElastic(1, .8)'
});
Метод .get() в cash извлекает внутренние DOM-элементы,
обеспечивая полную совместимость с библиотекой.
Velocity.js позволяет напрямую работать с cash-коллекциями, благодаря поддержке NodeList и массивов DOM:
$('.square').velocity({ left: '200px', opacity: 1 }, { duration: 1000 });
.get() при необходимости:
Если библиотека строго требует массив DOM-элементов.stagger вместо итерации каждого элемента
вручную.Интеграция cash с внешними библиотеками анимации обеспечивает компактный и читаемый код, при этом позволяя использовать все возможности современных JS-анимаций. Она упрощает выбор элементов, управление их состоянием и комбинирование различных техник анимации в одном проекте.