Bliss.js предоставляет легкий и гибкий механизм управления анимациями DOM-элементов через методы, интегрированные с классами и стилями. Анимации реализуются с использованием CSS-переходов, keyframes и JavaScript-событий, при этом библиотека упрощает синхронизацию, управление задержками и цепочки эффектов.
Анимация начинается с выбора элемента через селектор
bliss.$() или коллекцию bliss.$$(). Для
запуска анимации используется метод .animate():
bliss.$('#box').animate({
transform: 'translateX(200px)',
opacity: 0.5
}, {
duration: 1000,
easing: 'ease-in-out',
complete: () => console.log('Анимация завершена')
});
linear,
ease-in, ease-out,
ease-in-out).Метод .animate() возвращает объект управления анимацией,
который позволяет приостанавливать, возобновлять и отменять
анимацию.
Для сложных сценариев Bliss.js поддерживает цепочки анимаций через
метод .chain(). Каждая анимация в цепочке выполняется после
завершения предыдущей:
bliss.$('#box')
.chain()
.animate({ opacity: 0 }, { duration: 500 })
.animate({ transform: 'translateY(100px)' }, { duration: 700 })
.animate({ opacity: 1 }, { duration: 500 });
.chain() создает очередь анимаций для элемента..pauseChain() и .resumeChain().Bliss.js позволяет повторять анимацию определенное количество раз или
бесконечно. Для этого используется опция loop:
bliss.$('#spinner').animate({
transform: 'rotate(360deg)'
}, {
duration: 1000,
loop: true,
easing: 'linear'
});
loop: true создаёт бесконечный цикл.Для синхронизации нескольких анимаций применяются опции
delay и stagger:
bliss.$$('.item').animate({
opacity: 1,
transform: 'translateY(0)'
}, {
duration: 600,
delay: 200,
stagger: 100
});
Анимации можно останавливать в любой момент с помощью метода
.stop():
let anim = bliss.$('#box').animate({ opacity: 0 }, { duration: 1000 });
setTimeout(() => anim.stop(), 500);
.stop() прерывает текущую анимацию и оставляет элемент
в состоянии, достигнутом на момент вызова..reset().Bliss.js поддерживает создание анимаций через keyframes, что позволяет задавать сложные последовательности изменений свойств:
bliss.$('#box').keyframe([
{ offset: 0, transform: 'translateX(0)', opacity: 1 },
{ offset: 0.5, transform: 'translateX(100px)', opacity: 0.5 },
{ offset: 1, transform: 'translateX(0)', opacity: 1 }
], {
duration: 2000,
easing: 'ease-in-out',
loop: true
});
Bliss.js предоставляет события для отслеживания состояния анимации:
onStart — вызывается при начале анимации.onProgress — вызывается при изменении состояния.onComplete — вызывается при завершении.Пример:
bliss.$('#box').animate({ opacity: 0 }, {
duration: 800,
onStart: () => console.log('Старт'),
onProgress: (progress) => console.log(progress),
onComplete: () => console.log('Завершено')
});
События помогают реализовывать интерактивные сценарии, например анимации при прокрутке или реакции на действия пользователя.
Bliss.js упрощает добавление и удаление классов с плавной анимацией
через .addClass() и .removeClass() с опцией
анимации:
bliss.$('#box').addClass('active', { animate: true, duration: 500 });
transform и opacity вместо
изменения top, left или width для
GPU-ускорения.stagger для создания визуально приятного
эффекта без резкого увеличения нагрузки на рендеринг.Bliss.js объединяет декларативный и программный подход к анимациям, предоставляя как простой запуск эффектов, так и полное управление последовательностями, задержками и событиями. Это делает библиотеку удобным инструментом для создания динамичных интерфейсов и сложных анимационных сценариев.