quick-cast v2.0.1
QuickCast Animation Library
Beta · In Development · Unstable
QuickCast — это лёгкая библиотека для анимаций на странице. На данный момент доступны две основные анимации: слайдер (Slider) и аккордеон (Accordion). В будущем планируются новые эффекты (например: «бегущая строка», «toggle-бары» и т. д.).
Установка
Требуется обязательное покдлючение последней версии GSAP перед QC
npm install gsap
npm install quick-castили
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.7/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Mishka122/quick-cast@main/dist/prod/qcast.min.js"></script>Особенности
- Гибкая настройка брейкпоинтов (брейкпоинты отвечают за классификацию устройств:
mobile,tablet,desktop). - Простая инициализация анимации через единый класс
Cast. - Две готовые анимации:
sliderиaccordion. - Поддержка колбэков для управления логикой во время анимации.
- Возможность использования пресетов
usePresetили полной кастомизации анимации через колбэкuseCustom.
Базовая настройка (брейкпоинты)
Перед использованием любой анимации (не обязательно, если устраивают значения по умолчанию), вы можете задать собственные брейкпоинты под мобильную и планшетную версии. Это делается через:
new Cast("settings", {
mobileMax: 480, // Максимальная ширина для mobile
tabletMax: 992, // Максимальная ширина для tablet
});По умолчанию, если вы не вызываете "settings", mobileMax будет 480, а tabletMax — 992.
Использование анимаций
Библиотека предоставляет класс Cast, который вы вызываете с нужным типом анимации и объектом опций.
new Cast("тип_анимации", {
/* ...настройки... */
});Доступные типы на данный момент:
slider— анимация-слайдерaccordion— анимация-аккордеон
Slider
Объект настроек для слайдера может содержать следующие поля (все поля — необязательные, кроме target). Ниже основные категории: selectors, animation, behavior, а также колбэки.
selectors
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| slides | string | не задано | Селектор для отдельных слайдов (элементы внутри контейнера). |
| slidesContainer | string | [qc-slider="content-parent"] | Селектор родительского контейнера слайдов. |
| swipeArea | string | не задано | Селектор области, по которой будет идти «свайп». |
| paginationContainer | string | не задано | Селектор контейнера пагинации (если используется pagination). |
| markers | string | не задано | Селектор для маркеров (точки, номера и т. д.). |
| markersActiveClass | string | ".active" | Класс для активного маркера. |
| leftArrow | string | [qc-slider="left-arrow"] | Селектор левой стрелки. |
| rightArrow | string | [qc-slider="right-arrow"] | Селектор правой стрелки. |
animation
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| delay | number | 0 | Задержка перед началом анимации (в секундах). |
| duration | number | 0.2 | Длительность анимации (в секундах). |
| ease | string | "power1.inOut" | Тип easing (в формате Easing GSAP). |
behavior
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| swipe | boolean | true | Включает/отключает «свайп» жест. |
| pagination | boolean | true | Включает/отключает пагинацию. |
| infinity | boolean | true | Включает «бесконечную» прокрутку слайдов. |
callbacks & customization
{ qcApi } для слайдера содержит: direction, currentSlide, previousSlide, nextSlide, previousSlide2, nextSlide2
| Параметр | Тип | Описание |
|---|---|---|
|onStart|function|Вызывается в начале анимации. Аргументом передаётся объект { qcApi }, содержащий вспомогательные методы.|
|onComplete|function|Вызывается в конце анимации, также получает { qcApi }.|
|usePreset|string|Название преднастроенного пресета анимации (Доступный пресет: classic.opacity).|
|useCustom|function|Полная ручная кастомизация анимации. При задании управление анимацией передаётся этой функции, все остальные параметры игнорируются, аргумент — { qcApi }.|
Пример использования Slider
const swiperFirst = new Cast("slider", {
target: ".swiper", // главный селектор блока, где будет слайдер
devices: "desktop", // работать только на десктопе
selectors: {
paginationContainer: ".pagination",
// ... прочие селекторы
},
animation: {
duration: 0.2,
ease: "power1.inOut",
},
behavior: {
pagination: true,
infinity: true,
swipe: true,
},
onStart: ({ qcApi }) => {
console.log("Slider started, direction:", qcApi.direction);
},
// ... при желании onComplete, usePreset, useCustom и т.п.
});Accordion
Объект настроек для аккордеона имеет схожую структуру: target (обязательный), devices, selectors, animation, behavior, колбэки.
selectors
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| panels | string | не задано | Селектор для панелей аккордеона. |
| header | string | не задано | Селектор заголовка (зоны, по которой кликать для открытия/закрытия). |
| content | string | не задано | Селектор скрытой части, которая открывается при активации панели. |
animation
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| delayStart | number | 0 | Задержка перед началом открытия (секунды). |
| delayComplete | number | 0 | Задержка перед завершением (закрытием). |
| durationStart | number | 0.8 | Длительность анимации раскрытия (секунды). |
| durationComplete | number | 0.8 | Длительность анимации закрытия (секунды). |
| easeStart | string | "power1.inOut" | Easing для открытия (в формате Easing GSAP). |
| easeComplete | string | "power2.out" | Easing для закрытия (в формате Easing GSAP). |
behavior
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| initialPanel | number | не задано | Номер панели, которая будет открыта при загрузке (начиная с 0). |
callbacks & customization
{ qcApi } для аккордеона содержит: currentPanel, previousPanel, event.
| Параметр | Тип | Описание |
|---|---|---|
|onStart|function|Вызывается в начале открытия/закрытия, получает { qcApi }.|
|onComplete|function|Вызывается в конце открытия/закрытия, также получает { qcApi }.|
|usePreset|string|Название пресета анимации (Доступный пресет: classic).|
|useCustom|function|Полная ручная кастомизация анимации. При задании управление анимацией передаётся этой функции, все иные параметры игнорируются, аргумент — { qcApi }.|
Пример использования Accordion
new Cast("accordion", {
target: ".faq-accordion",
devices: "mobile,desktop", // Например, работать на мобилке и десктопе
selectors: {
panels: ".panel",
header: ".panel-header",
content: ".panel-content",
},
animation: {
delayStart: 0,
durationStart: 0.8,
easeStart: "power1.inOut",
// ...
},
behavior: {
initialPanel: 1, // Открыть вторую панель при загрузке (считаем с 0)
},
onStart: ({ qcApi }) => {
console.log("Accordion onStart, currentPanel:", qcApi.currentPanel);
},
});API колбэков (qcApi)
Во всех колбэках (onStart, onComplete, useCustom и т. д.) первым аргументом приходит объект, содержащий поле qcApi. С его помощью вы можете взаимодействовать с элементами анимации.
qcApi в Slider
Для слайдера slider доступны геттеры:
qcApi.currentSlide;
qcApi.previousSlide;
qcApi.nextSlide;
qcApi.previousSlide2;
qcApi.nextSlide2;
qcApi.direction;currentSlide— индекс (или ссылка) на текущий слайд.previousSlide,previousSlide2— предыдущий слайд и «ещё на один» до предыдущего (если нужно).nextSlide,nextSlide2— следующий слайд и «последующий» за ним.direction— направление прокрутки ("forward", "backward", etc.).
qcApi в Accordion
Для аккордеона accordion состав такой:
qcApi.currentPanel;
qcApi.previousPanel;
qcApi.event;currentPanel— индекс (или ссылка) на текущую панель, которая открывается.previousPanel— индекс (или ссылка) на предыдущую открытую панель.event— тип события, например "open", "close" и т. д.
В разработке
- Перенос бибилотеки на TS.
- Новые анимации: бегущая строка (marquee), toggle-бары и прочие эффекты.
- Улучшенный механизм пресетов, расширение библиотеки пресетов.
- Расширенная документация и примеры.
Следите за обновлениями, библиотека находится в состоянии активной разработки и может изменяться (см. теги beta, in-development, unstable).