Справочник API
Параметры, методы, свойства, события и настройки модулей Tvist на одной странице. Имена записей — постоянные ссылки; пояснения и примеры доступны сразу.
Инициализация
import Tvist from 'tvist'
import 'tvist/dist/tvist.css'
const slider = new Tvist('.slider', {
perPage: 3,
gap: 20,
arrows: true,
pagination: true,
})
slider.next()
Первый аргумент — CSS-селектор или HTMLElement, второй — объект опций. Индексы слайдов начинаются с нуля. Полная сборка регистрирует встроенные модули автоматически.
Разметка и быстрый старт · Браузерная сборка · Живые примеры · Конструктор
Опции
Параметры конструктора new Tvist(target, options). Вложенные настройки включённого модуля приведены в его разделе.
| Опция | Тип | По умолчанию | Описание | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
arrows | boolean | { prev?: string | HTMLElement; next?: string | HTMLElement; disabledClass?: string; hiddenClass?: string; addIcons?: boolean; hideWhenSinglePage?: boolean; } | false | Навигационные стрелки. true — поиск по стандартным классам и создание недостающих кнопок внутри root, объект — кастомная настройка. Созданные кнопки удаляются при отключении опции или destroy(). Пользовательские элементы сохраняются после
| ||||||||||
autoHeight | boolean | false | Если true, высота слайдов определяется их содержимым (для вертикального направления). Рекомендуется perPage: 1. | ||||||||||
autoplay | boolean | number | AutoplayOptions | false | Автопрокрутка слайдов.
Число задаёт задержку в миллисекундах. Управлять работающей автопрокруткой можно через
| ||||||||||
autoWidth | boolean | false | Если true, ширина слайдов определяется их содержимым (не задаётся слайдером). Рекомендуется perPage: 1. | ||||||||||
breakpoints | Record<number, Partial<TvistOptions> & { enabled?: boolean; }> | undefined | Адаптивные настройки по breakpoints. Ключ - ширина экрана в пикселях Ключ — максимальная ширина в пикселях. При совпадении нескольких условий применяется наименьший подходящий breakpoint; за пределами условий восстанавливаются базовые опции.
| ||||||||||
breakpointsBase | 'window' | 'container' | 'window' | База для расчёта breakpoints | ||||||||||
browserFixes | BrowserFixesOptions | { firefoxImageDecoding: true } | Специфичные фиксы для браузеров | ||||||||||
center | boolean | CenterOptions | false | Центрирование слайдов.
| ||||||||||
cubeEffect | { slideShadows?: boolean; shadow?: boolean; shadowOffset?: number; shadowScale?: number; perspective?: number; perspectiveOriginY?: number; viewportPadding?: number; } | — | Настройки cube эффекта | ||||||||||
debug | boolean | false | Режим отладки: вывод предупреждений в консоль (arrows not found, container not found и т.д.) | ||||||||||
direction | 'horizontal' | 'vertical' | 'horizontal' | Направление прокрутки слайдера | ||||||||||
drag | boolean | 'free' | true | Включить перетаскивание слайдов. ‘free’ - свободная прокрутка без привязки к слайдам
| ||||||||||
dragSpeed | number | 1 | Множитель скорости перетаскивания | ||||||||||
effect | 'slide' | 'fade' | 'cube' | 'slide' | Эффект перехода между слайдами | ||||||||||
enabled | boolean | true | Включить/выключить слайдер. При false слайдер не инициализируется (статичный контент) При | ||||||||||
fadeEffect | { crossFade?: boolean; } | — | Настройки fade эффекта | ||||||||||
fixedHeight | number | string | — | Фиксированная высота слайда (px или CSS).
Для вертикального направления: число видимых рядов считается по высоте контейнера,
Для вертикального направления задайте высоту viewport в CSS, чтобы слайдер мог рассчитать число видимых рядов. | ||||||||||
fixedWidth | number | string | — | Фиксированная ширина слайда (px или CSS, например
| ||||||||||
flickMaxPages | number | 1 | Максимальное количество слайдов для короткого flick в обычном режиме. Длинное перетаскивание может пройти больше слайдов. | ||||||||||
flickPower | number | 600 | Сила инерции (flick power). Множитель скорости при расчёте дистанции
momentum scroll и snap после drag в обычном режиме ( | ||||||||||
focusableElements | string | 'input, textarea, select, [tabindex]' | CSS селектор для элементов, которые должны сохранять фокус при перетаскивании | ||||||||||
freeSnap | boolean | false | Привязка к слайдам в free режиме. Если true, после momentum scroll будет snap к ближайшему слайду | ||||||||||
gap | number | string | 0 | Расстояние между слайдами: число (px) или CSS-строка (например | ||||||||||
grid | { rows?: number; cols?: number; gap?: { row?: number | string; col?: number | string; } | number | string; dimensions?: [ number, number ][]; } | undefined | Сетка слайдов
Размеры | ||||||||||
holdToPause | boolean | HoldToPauseOptions | undefined | Удержание для сценариев историй:
Удержание приостанавливает autoplay и при настройке | ||||||||||
isNavigation | boolean | false | Если true, слайдер будет вести себя как навигация (клики по слайдам делают их активными). Используется для создания thumbnail-слайдеров | ||||||||||
keyboard | boolean | { enabled?: boolean; onlyInViewport?: boolean; } | false | Настройки управления с клавиатуры; в текущей версии обработчики не реализованы. | ||||||||||
lazy | boolean | { preloadPrevNext?: number; } | false | Ленивая загрузка изображений Используйте | ||||||||||
loop | boolean | 'auto' | LoopOptions | false | Бесконечная прокрутка. ‘auto’ - определяется автоматически на основе количества слайдов. Поддерживаются следующие варианты:
В обычном loop слайды переставляются в DOM. При
| ||||||||||
marquee | boolean | { speed?: number; direction?: 'left' | 'right' | 'up' | 'down'; pauseOnHover?: boolean; } | false | Режим бегущей строки (непрерывная прокрутка) Автоматически включает loop. При объектной форме пауза при наведении включается явно.
| ||||||||||
nativeLazyAdjacent | boolean | NativeLazyAdjacentOptions | false (выключено) | Предзагрузка изображений с нативным В отличие от
Для ручной подгрузки экспортируется утилита | ||||||||||
navThrottleMs | number | 0 | Минимальный интервал (мс) между вызовами next()/prev(). В loop повторные шаги в том же направлении игнорируются до завершения перехода. Полезно при speed: 0 или при серии программных вызовов. | ||||||||||
on | object | — | Обработчики событий слайдера
Имена событий и аргументы перечислены в таблице событий. | ||||||||||
pagination | boolean | { container?: string | HTMLElement; type?: 'bullets' | 'fraction' | 'progress' | 'custom'; clickable?: boolean; bulletClass?: string; bulletActiveClass?: string; renderBullet?: (index: number, className: string) => string; renderFraction?: (current: number, total: number) => string; renderCustom?: (current: number, total: number) => string; hideWhenSinglePage?: boolean; limit?: number; strategy?: 'even' | 'center'; remainderStrategy?: 'left' | 'center' | 'right'; } | false | Пагинация. true — буллеты в стандартном контейнере внутри root (создаётся, если отсутствует), объект — кастомная настройка. Созданный контейнер удаляется при отключении опции или destroy(). Внешний контейнер можно передать селектором или элементом.
| ||||||||||
peek | number | string | { left?: number | string; right?: number | string; } | { top?: number | string; bottom?: number | string; } | undefined | Peek — отступы, показывающие часть соседних слайдов (чтобы было видно, что есть ещё слайды). Для горизонтального слайдера: left/right, для вертикального: top/bottom.
Числа задаются в пикселях, строки — в CSS-единицах. Для горизонтального слайдера используйте | ||||||||||
peekTrim | boolean | true | Peek trim: при true (по умолчанию) концовка прижимается к краю — последний слайд без дыры справа/снизу. При включённом loop не применяется. | ||||||||||
perPage | number | 1 | Количество слайдов на странице (видимых одновременно). При
| ||||||||||
preventClicks | boolean | true | Предотвращать клики по слайдам во время перетаскивания | ||||||||||
preventClicksPropagation | boolean | true | Предотвращать распространение событий клика во время анимации | ||||||||||
rewind | boolean | false | Автоматически возвращаться к первому слайду после достижения последнего (работает без loop) Применяется к навигации, autoplay и другим способам перехода между слайдами Используется без loop. Для возврата перетаскиванием дополнительно включите | ||||||||||
rewindByDrag | boolean | false | Разрешить перемотку карусели перетаскиванием, если включён | ||||||||||
roundLengths | boolean | true | Округлять translate и размеры до целых пикселей при применении в DOM.
Помогает убрать субпиксельные щели/мыло на некоторых DPR и браузерах.
Аналогично | ||||||||||
rubberband | boolean | true | Эффект “резинки” при перетаскивании за границы | ||||||||||
scrollbar | boolean | { container?: string | HTMLElement; hide?: boolean; hideDelay?: number; scrollbarClass?: string; trackClass?: string; thumbClass?: string; draggable?: boolean; } | false | Кастомный скроллбар для навигации | ||||||||||
slideMinSize | number | undefined | Минимальный размер слайда (ширина или высота) для автоматического расчета perPage | ||||||||||
slidesPerGroup | number | 1 | Количество слайдов, пролистываемых за один раз. Задаёт шаг | ||||||||||
speed | number | 300 | Скорость анимации перехода в миллисекундах | ||||||||||
start | number | 0 | Индекс начального слайда | ||||||||||
syncOnDrag | boolean | true | Синхронизировать ли слайдеры при перетаскивании (drag). Если false, то при перетаскивании одного слайдера другой не будет переключаться, синхронизация сработает только при клике или переключении стрелками. | ||||||||||
thumbs | { slider: Tvist; } | — | Связь с thumbnail-слайдером | ||||||||||
video | boolean | VideoOptions | false | Управление видео внутри слайдов (HTML
Поддерживаются HTML
| ||||||||||
visibility | boolean | VisibilityOptions | true | Отслеживание видимости слайдера для приостановки autoplay/marquee.
| ||||||||||
wheel | boolean | { sensitivity?: number; releaseOnEdges?: boolean; } | false | Управление колёсиком мыши |
Методы
| Метод | Возвращает | Описание |
|---|---|---|
next(): this | this | Следующий слайд (или страница при perPage > 1)
|
prev(): this | this | Предыдущий слайд (или страница при perPage > 1)
|
scrollTo(index: number, instant?: boolean): this | this | Переход к слайду по индексу Индекс логический (
|
update(): this | this | Обновить размеры и пересчитать позиции Вызывайте после изменения содержимого или DOM-структуры слайдов. Изменение размеров контейнера отслеживается автоматически.
|
updateOptions(newOptions: Partial<TvistOptions>): this | this | Обновить опции слайдера динамически (без пересоздания) Передавайте только изменённые параметры. Вложенный объект опции заменяется целиком; для сохранения его полей передайте их снова. Исключение — поля
|
disable(): this | this | Отключить слайдер (превратить в статичный контент) Убирает transform, отключает модули, но сохраняет экземпляр
|
enable(): this | this | Включить слайдер (восстановить функциональность)
|
destroy(options?: TvistDestroyOptions): this | this | Уничтожить экземпляр и очистить ресурсы.
Вложенные Tvist по умолчанию не уничтожаются — задайте Отписывается от событий, уничтожает модули и очищает созданные элементы управления. По умолчанию вложенные слайдеры продолжают работать.
|
on(event: string, handler: (...args: any[]) => void): this | this | Подписаться на событие
При поздней подписке некоторые события инициализации воспроизводят последние аргументы: |
off(event: string, handler?: (...args: any[]) => void): this | this | Отписаться от события Без второго аргумента снимает все обработчики указанного события.
|
emit(event: string, ...args: any[]): this | this | Вызвать событие
|
once(event: string, handler: (...args: any[]) => void): this | this | Подписаться на событие один раз
Если для события доступно сохранённое состояние инициализации, обработчик выполняется сразу один раз. |
sync(target: Tvist): this | this | Синхронизация с другим экземпляром Tvist Для двусторонней связи вызовите метод на обоих экземплярах. Настройка
|
Свойства
| Свойство | Тип | Описание | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
id | stringТолько чтение | Уникальный идентификатор экземпляра. | ||||||||
root | HTMLElementТолько чтение | Корневой элемент слайдера. На root выставляются классы из
| ||||||||
track | HTMLElementТолько чтение | Элемент viewport, обрезающий видимую область. | ||||||||
container | HTMLElementТолько чтение | Контейнер слайдов, к которому применяется transform. | ||||||||
options | TvistOptionsТолько чтение | Текущая конфигурация. Для изменения используйте updateOptions(). Ссылка только для чтения; для изменения конфигурации используйте | ||||||||
isEnabled | booleanТолько чтение | Проверить, включен ли слайдер | ||||||||
slides | HTMLElement[]Только чтение | Получить список слайдов Порядок соответствует текущему DOM; loop может его менять. Для стилей определённого слайда используйте | ||||||||
originalSlideCount | numberТолько чтение | Количество оригинальных слайдов (без клонов). В режиме loop.withClones не учитывает клонированные слайды по краям. | ||||||||
slideCount | numberТолько чтение | Общее количество слайдов в DOM (включая клоны). В режиме loop.withClones включает клонированные слайды по краям. Совпадает с originalSlideCount если loop.withClones не используется. | ||||||||
activeIndex | numberТолько чтение | Получить текущий индекс активного слайда Индекс в текущем DOM. Для логического индекса исходного слайда при loop используйте | ||||||||
realIndex | numberТолько чтение | Получить текущий логический индекс слайда (с учётом loop)
| ||||||||
canScrollNext | booleanТолько чтение | Проверить, можно ли листать вперёд | ||||||||
canScrollPrev | booleanТолько чтение | Проверить, можно ли листать назад | ||||||||
autoplay | AutoplayControls | undefinedТолько чтение | Получить публичное API autoplay модуля Доступно при активном модуле autoplay. Методы управления. | ||||||||
video | VideoControls | undefinedТолько чтение | Получить публичное API video модуля Доступно при активном модуле video. Методы управления. | ||||||||
marquee | MarqueeControls | undefinedТолько чтение | Continuous motion controls, when enabled.
| ||||||||
lazyload | LazyloadControls | undefinedТолько чтение | Explicit lazy image loading, when enabled.
| ||||||||
visibility | VisibilityControls | undefinedТолько чтение | Visibility controls, when enabled.
| ||||||||
currentBreakpoint | number | nullТолько чтение | Matching breakpoint, or null when no breakpoint applies. Номер активного брейкпоинта либо | ||||||||
root.tvistInstance | Tvist | null | undefined | Ссылка на экземпляр Tvist на корневом DOM-элементе. Позволяет получить экземпляр через DOM. После
|
События
Передавайте обработчики в on или подписывайтесь через slider.on(). Аргументы зависят от события; экземпляр слайдера не добавляется автоматически.
| Событие | Аргументы | Когда вызывается |
|---|---|---|
created | (tvist: Tvist) | После создания слайдера К этому моменту на root уже установлен
|
beforeDestroy | (tvist: Tvist) | Перед уничтожением Вызывается до очистки модулей и DOM, перед добавлением класса |
destroyed | (tvist: Tvist) | При уничтожении К этому моменту на root установлен |
click | (index: number, slide: HTMLElement, event: MouseEvent) | Клик по слайду |
refresh | () | Вызван update() — пересчитаны размеры/позиции |
resized | () | Завершилось изменение размера контейнера |
beforeSlideChange | (index: number) | Перед сменой слайда |
slideChangeStart | (index: number, data?: { isDrag?: boolean; }) | Начало смены слайда (старт анимации)
|
slideChangeEnd | (index: number, data?: { isDrag?: boolean; }) | Смена слайда завершена (после анимации)
|
beforeTransitionStart | (data: { index: number; direction: "next" | "prev"; }) | Перед началом анимации перехода (для loop fix) |
transitionStart | (index: number) | Начало анимации перехода |
transitionEnd | (index: number) | Конец анимации перехода |
visible | (slide: HTMLElement, index: number) | Слайд вошёл в видимую область (по расчёту движка: пересечение с viewport; для effect cube — та же геометрия граней, что и у эффекта куба). За одну анимацию или кадр событие может прийти для нескольких слайдов (например perPage>1 или при кубе — до двух граней, пока идёт переход). Для логики «текущий слайд» используйте slideChangeEnd / activeIndex, а не этот колбэк. В обработчике опирайтесь на аргумент index, а не на activeIndex в момент вызова. Во время одного перехода событие может прийти для нескольких слайдов. Ориентируйтесь на аргумент |
scroll | () | Во время прокрутки (тики анимации / драг) |
progress | (progress: number) | Прогресс прокрутки 0…1, только при !loop Вызывается только без loop; значение в диапазоне 0…1. |
reachBeginning | () | Достигнут первый слайд |
reachEnd | () | Достигнут последний слайд |
dragStart | () | Начало перетаскивания |
drag | () | Во время перетаскивания |
dragEnd | () | Конец перетаскивания |
breakpoint | (breakpoint: number | null) | Смена breakpoint |
lock | () | Слайдер заблокирован (контент помещается в область) |
unlock | () | Слайдер разблокирован |
optionsUpdated | (tvist: Tvist, newOptions: Partial<TvistOptions>) | Обновлены опции через updateOptions()
|
videoReady | (data: VideoEvent) | Видео загрузило метаданные и готово к воспроизведению |
videoPlay | (data: VideoEvent) | Видео начало воспроизведение |
videoPause | (data: VideoEvent) | Видео поставлено на паузу |
videoEnded | (data: VideoEvent) | Видео завершило воспроизведение |
videoProgress | (data: VideoProgressEvent) | Прогресс воспроизведения видео (0…1) |
autoplayProgress | (data: AutoplayProgressEvent) | Прогресс активного сегмента (текущий слайд, 0…1)
|
longPressStart | (data: { index: number; pointerType: string; }) | Начало long press удержания Требуется включённый |
longPressEnd | (data: { index: number; pointerType: string; }) | Конец long press удержания Отправляется при завершении или отмене удержания, включая начало drag. |
sliderVisible | () | Слайдер стал видимым |
sliderHidden | () | Слайдер скрыт |
enabled | (tvist: Tvist) | После вызова |
disabled | (tvist: Tvist) | После вызова |
autoplayStart | () | Автопрокрутка запущена. |
autoplayStop | () | Автопрокрутка остановлена. |
autoplayPause | () | Автопрокрутка поставлена на паузу. |
autoplayResume | () | Автопрокрутка продолжена после паузы. |
marqueeStart | () | Бегущая строка запущена. |
marqueeStop | () | Бегущая строка остановлена. |
marqueePause | () | Бегущая строка поставлена на паузу. |
marqueeResume | () | Бегущая строка продолжена после паузы. |
navigation:mounted | () | Кнопки навигации смонтированы. |
pagination:mounted | () | Пагинация смонтирована. |
navigation:click | (index: number) | Пользователь выбрал слайд в слайдере-миниатюрах. |
setTranslate | (tvist: Tvist, position: number) | Перед применением transform к контейнеру. Используется собственными эффектами. |
beforeLoopFix | () | Перед перестановкой слайдов для коррекции loop. Событие для расширений. |
loopFix | () | После коррекции loop. Событие для расширений. |
lazyLoaded | (img: HTMLImageElement, slideIndex: number) | Изображение с
|
lazyLoadError | (img: HTMLImageElement, slideIndex: number) | Загрузка изображения модулем LazyLoad завершилась ошибкой. Можно показать запасное изображение. |
Статический API
| Метод | Возвращает | Описание |
|---|
| Свойство | Тип | Описание |
|---|---|---|
VERSION | stringТолько чтение | Library version. |
CLASSES | typeof TVIST_CLASSESТолько чтение | BEM class names. |
CSS_PREFIX | `tvist-v${number}`Только чтение | Устарело: Use Tvist.CLASSES.block. |
Вложенные настройки
peek
center
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
active | boolean | false | Центрирует активный слайд в viewport (аналог center: true). |
focus | boolean | false | Центрирует активный слайд, когда есть место; у краёв обрезает позицию
(аналог Splide |
justify | boolean | false | Центрирует все слайды визуально когда locked (justify-content: center). |
browserFixes
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
firefoxImageDecoding | boolean | true | Firefox: добавлять атрибут decoding=“sync” к изображениям при предзагрузке. Предотвращает задержку отрисовки декодированных изображений в Firefox. |
Модули
Настройки, управление и события встроенных модулей. Встроенные возможности и миграция API →
Пагинация
Опция: pagination.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
bulletActiveClass | string | Tvist.CLASSES.bulletActive | CSS класс для активного буллета. |
bulletClass | string | Tvist.CLASSES.bullet | CSS класс для буллета. |
clickable | boolean | true | Включить клики по буллетам для навигации. |
container | string | HTMLElement | — | Селектор или элемент контейнера для пагинации. Может быть вне root |
hideWhenSinglePage | boolean | true | Автоматически скрывать пагинацию когда всего одна страница (нечего листать). |
limit | number | undefined | Максимальное количество видимых точек (только для type: ‘bullets’) Если не указано - показываются все точки |
remainderStrategy | 'left' | 'center' | 'right' | 'center' | Стратегия распределения остатка при равномерном делении (только для strategy: ‘even’)
|
renderBullet | (index: number, className: string) => string | — | Функция рендеринга буллета Возвращаемый HTML должен содержать переданный
|
renderCustom | (current: number, total: number) => string | — | Функция рендеринга кастомной пагинации |
renderFraction | (current: number, total: number) => string | — | Функция рендеринга дробной пагинации |
strategy | 'even' | 'center' | 'even' | Стратегия распределения слайдов по точкам при использовании limit
|
type | 'bullets' | 'fraction' | 'progress' | 'custom' | 'bullets' | Тип пагинации. |
События: pagination:mounted, autoplayProgress.
Перетаскивание и удержание
Настройки drag, dragSpeed, rubberband, freeSnap, flickPower и flickMaxPages находятся в общей таблице. Ниже — настройки долгого удержания.
Опция: holdToPause.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
cancelOnDrag | boolean | true | Отменять удержание при старте drag |
enabled | boolean | true | Включить long press удержание |
exclude | string | undefined | CSS-селектор элементов, которые нужно исключить из удержания |
moveThreshold | number | undefined | Порог движения до отмены удержания (px). Если не задан, используется внутренний порог drag. |
root | 'slider' | 'container' | HTMLElement | 'slider' | Область, в которой отслеживается удержание:
|
threshold | number | 100 | Порог удержания в миллисекундах.
Дефолт при отсутствии поля — |
События: dragStart, drag, dragEnd, longPressStart, longPressEnd.
Автопрокрутка
Методы вызываются через slider.autoplay?.pause() и другие методы этого свойства. При паузе сохраняется оставшееся время, а start() запускает цикл заново.
Опция: autoplay.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
delay | number | 3000 | Задержка между переходами в миллисекундах |
disableOnInteraction | boolean | false | Отключить автопрокрутку после первого взаимодействия пользователя |
pauseOnFocus | boolean | true | Ставить автопрокрутку на паузу, пока фокус находится внутри слайдера |
pauseOnHover | boolean | true | Ставить автопрокрутку на паузу при наведении курсора |
pauseOnInteraction | boolean | true | Ставить автопрокрутку на паузу при любом взаимодействии (drag, click) |
waitForVideo | boolean | false | Для видео-слайдов: ждать окончания видео вместо таймера. Для слайдов без видео используется обычный delay. |
| Метод | Возвращает | Описание |
|---|---|---|
autoplay.start(): void | void | Запустить прокрутку. |
autoplay.stop(): void | void | Остановить прокрутку. |
autoplay.pause(): void | void | Приостановить прокрутку. |
autoplay.resume(): void | void | Продолжить после паузы. |
autoplay.isRunning(): boolean | boolean | Проверить, запущена ли прокрутка. |
autoplay.isPaused(): boolean | boolean | Проверить состояние паузы. |
autoplay.isStopped(): boolean | boolean | Проверить, остановлена ли прокрутка. |
События: autoplayStart, autoplayStop, autoplayPause, autoplayResume, autoplayProgress.
Видео
Методы вызываются через slider.video?.play(). Аргумент index необязателен; без него используется активный слайд.
Опция: video.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
autoplay | boolean | true | Воспроизводить видео при активации слайда |
loop | boolean | false | Зациклить воспроизведение видео |
muted | boolean | true | Начинать видео с выключенным звуком (обязательно для autoplay в браузерах) |
pauseOnHold | boolean | true (если включен holdToPause), иначе false | Ставить активное видео на паузу во время long press и продолжать после отпускания |
pauseOnLeave | boolean | true | Ставить видео на паузу при уходе со слайда |
playsinline | boolean | true | Добавить атрибут playsinline для iOS (без этого видео открывается на весь экран) |
resetOnLeave | boolean | false | Сбрасывать видео на начало при уходе со слайда |
| Метод | Возвращает | Описание |
|---|---|---|
video.play(index?: number): void | void | Воспроизвести видео выбранного или активного слайда. |
video.pause(index?: number): void | void | Поставить видео выбранного или активного слайда на паузу. |
video.mute(): void | void | Выключить звук всех видео. |
video.unmute(): void | void | Включить звук всех видео. |
video.isMuted(): boolean | boolean | Проверить, выключен ли звук. |
События: videoReady, videoPlay, videoPause, videoEnded, videoProgress.
Видимость
Управление видимостью доступно через slider.visibility. Используйте события sliderVisible и sliderHidden, чтобы реагировать на изменения.
Опция: visibility.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
pauseAutoplay | boolean | true | Приостанавливать autoplay когда слайдер скрыт |
pauseMarquee | boolean | true | Приостанавливать marquee когда слайдер скрыт |
threshold | number | 0 | Порог видимости для IntersectionObserver (0…1) 0 = считается видимым если хоть что-то видно 1 = считается видимым только если виден полностью |
| Метод | Возвращает | Описание |
|---|---|---|
visibility.isVisible(): boolean | boolean | |
visibility.check(): void | void |
События: sliderVisible, sliderHidden.
Бесконечная прокрутка
Опция: loop.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled | boolean | true | Включить/выключить loop.
По умолчанию |
withClones | boolean | false | Включить систему DOM-клонов для loop.
По умолчанию В режиме клонов индексы и события должны трактоваться так, как будто пользователь взаимодействует с оригинальными слайдами. |
События: beforeLoopFix, loopFix.
Бегущая строка
const marquee = slider.marquee
marquee?.pause()
marquee?.resume()
Тип интерфейса управления выводится из slider.marquee.
Опция: marquee.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
direction | 'left' | 'right' | 'up' | 'down' | 'left' для horizontal, 'up' для vertical | Направление прокрутки. |
pauseOnHover | boolean | true для marquee: true; undefined для объекта | Пауза при наведении. |
speed | number | 50 | Скорость прокрутки в пикселях в секунду. |
| Метод | Возвращает | Описание |
|---|---|---|
marquee.start(): void | void | Запустить прокрутку. |
marquee.stop(): void | void | Остановить прокрутку. |
marquee.pause(): void | void | Приостановить прокрутку. |
marquee.resume(): void | void | Продолжить после паузы. |
marquee.isRunning(): boolean | boolean | Проверить, запущена ли прокрутка. |
marquee.isPaused(): boolean | boolean | Проверить состояние паузы. |
marquee.isStopped(): boolean | boolean | Проверить, остановлена ли прокрутка. |
marquee.setSpeed(speed: number): void | void | Установить скорость в пикселях в секунду. |
marquee.getSpeed(): number | number | |
marquee.setDirection(direction: "left" | "right" | "up" | "down"): void | void | |
marquee.getDirection(): "left" | "right" | "up" | "down" | "left" | "right" | "up" | "down" |
События: marqueeStart, marqueeStop, marqueePause, marqueeResume.
Эффекты
Задайте effect: 'fade' или effect: 'cube'. Для cube viewport должен иметь размеры. Некоторые объявленные настройки эффектов пока не используются — это отмечено в описаниях полей.
Опция: fadeEffect.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
crossFade | boolean | — | Настройка кросс-фейда; в текущей реализации fade не используется. |
Опция: cubeEffect.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
perspective | number | 800 | Расстояние перспективы (px). Меньше = сильнее эффект глубины. |
perspectiveOriginY | number | 60 | Точка перспективы по Y (%). |
shadow | boolean | — | Общая тень куба; в текущей реализации не используется. |
shadowOffset | number | — | Смещение общей тени; в текущей реализации не используется. |
shadowScale | number | — | Масштаб общей тени; в текущей реализации не используется. |
slideShadows | boolean | true | Тени на гранях куба. |
viewportPadding | number | 10 | Внутренний отступ для предотвращения обрезки вращающихся граней (px). |
События: setTranslate.
Сетка
Опция: grid.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
cols | number | 1 при заданном rows | Количество колонок.
Если задан только |
dimensions | [ number, number ][] | — | Размеры ячеек для каждого слайда [colSpan, rowSpan] Массив повторяется, если слайдов больше, чем определений
|
gap | { row?: number | string; col?: number | string; } | number | string | gap | Отступы сетки. Можно задать отдельно для строк и колонок. Если не задано, используется глобальный gap. |
rows | number | 1 при заданном cols | Количество рядов.
Если задан только |
grid.gap
Миниатюры
const thumbs = new Tvist('.thumbs', { perPage: 4, isNavigation: true })
const main = new Tvist('.main', { thumbs: { slider: thumbs } })
Опция: thumbs.
События: navigation:click.
Загрузка изображений
const lazy = slider.lazyload
lazy?.loadSlide(2)
lazy?.loadAll()
Используйте slider.lazyload без импорта внутренних компонентов.
Опция: lazy.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
preloadPrevNext | number | 1 | Количество соседних слайдов для предзагрузки с каждой стороны. |
Опция: nativeLazyAdjacent.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
onInit | boolean | false (включите явно `onInit: true`) | После инициализации слайдера — для слайдов prev/next относительно активного. Дополнительный трафик при загрузке страницы; по умолчанию выключено. |
onTransitionStart | boolean | true при включённой опции (`true` или объект без `onTransitionStart: false`) | В начале перехода к другому слайду (событие beforeSlideChange), до анимации; то же при speed: 0. |
| Метод | Возвращает | Описание |
|---|---|---|
lazyload.loadAll(): void | void | |
lazyload.loadSlide(index: number): void | void |
События: lazyLoaded, lazyLoadError.
Колёсико и клавиатура
Модуль использует wheel. Настройки keyboard присутствуют в типах, но обработчики клавиатуры в текущей версии не реализованы.
Опция: wheel.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
releaseOnEdges | boolean | true | Разрешить прокрутку страницы на краях слайдера. |
sensitivity | number | 1 | Чувствительность (количество пикселей на тик колёсика). |
Опция: keyboard.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled | boolean | — | Включить управление с клавиатуры |
onlyInViewport | boolean | — | Реагировать только когда слайдер в видимой области |
Скроллбар
const slider = new Tvist('.slider', {
scrollbar: { draggable: true, hide: true, hideDelay: 1000 },
})
Опция: scrollbar.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
container | string | HTMLElement | — | Селектор или элемент для контейнера скроллбара |
draggable | boolean | true | Возможность перетаскивания ползунка. |
hide | boolean | false | Автоматически скрывать скроллбар при бездействии. |
hideDelay | number | 1000 | Задержка перед скрытием (мс). |
scrollbarClass | string | Tvist.CLASSES.scrollbar | CSS класс для скроллбара. |
thumbClass | string | Tvist.CLASSES.scrollbarThumb | CSS класс для ползунка. |
trackClass | string | Tvist.CLASSES.scrollbarTrack | CSS класс для трека скроллбара. |
Адаптивность
Текущий breakpoint доступен в slider.currentBreakpoint; без совпадения возвращается null.
Опция: breakpoints.
События: breakpoint.
Состояния слайдов
Выставляет классы активного и видимого слайда, а также состояния root. Для нестандартного оформления используйте Tvist.CLASSES.
Типы
TvistLongPressDomEventDetail
detail для DOM CustomEvent long press на слайде (имена в TVIST_DOM_EVENTS)
| Поле | Тип | Описание |
|---|---|---|
index | number | |
pointerType | string |
TvistDestroyOptions
Аргументы метода Tvist.destroy.
| Поле | Тип | Описание |
|---|---|---|
destroyNested | boolean | Уничтожать вложенные экземпляры Tvist (потомки с классом блока).
Рекурсивно: у каждого вложенного вызывается По умолчанию: |
AutoplayControls
API модуля autoplay для публичного геттера
| Поле | Тип | Описание |
|---|
MarqueeControls
API модуля marquee для публичного геттера
| Поле | Тип | Описание |
|---|
VideoControls
API модуля video для публичного геттера
| Поле | Тип | Описание |
|---|
AutoplayOptions
Опции автопрокрутки (объект)
| Поле | Тип | Описание |
|---|---|---|
delay | number | Задержка между переходами в миллисекундах По умолчанию: |
pauseOnHover | boolean | Ставить автопрокрутку на паузу при наведении курсора По умолчанию: |
pauseOnFocus | boolean | Ставить автопрокрутку на паузу, пока фокус находится внутри слайдера По умолчанию: |
pauseOnInteraction | boolean | Ставить автопрокрутку на паузу при любом взаимодействии (drag, click) По умолчанию: |
disableOnInteraction | boolean | Отключить автопрокрутку после первого взаимодействия пользователя По умолчанию: |
waitForVideo | boolean | Для видео-слайдов: ждать окончания видео вместо таймера. Для слайдов без видео используется обычный delay. По умолчанию: |
VideoOptions
Опции видео модуля
| Поле | Тип | Описание |
|---|---|---|
autoplay | boolean | Воспроизводить видео при активации слайда По умолчанию: |
muted | boolean | Начинать видео с выключенным звуком (обязательно для autoplay в браузерах) По умолчанию: |
loop | boolean | Зациклить воспроизведение видео По умолчанию: |
playsinline | boolean | Добавить атрибут playsinline для iOS (без этого видео открывается на весь экран) По умолчанию: |
pauseOnLeave | boolean | Ставить видео на паузу при уходе со слайда По умолчанию: |
resetOnLeave | boolean | Сбрасывать видео на начало при уходе со слайда По умолчанию: |
pauseOnHold | boolean | Ставить активное видео на паузу во время long press и продолжать после отпускания По умолчанию: |
HoldToPauseOptions
Опции удержания для сценариев историй (long press)
| Поле | Тип | Описание |
|---|---|---|
enabled | boolean | Включить long press удержание По умолчанию: |
threshold | number | Порог удержания в миллисекундах.
Дефолт при отсутствии поля — По умолчанию: |
root | 'slider' | 'container' | HTMLElement | Область, в которой отслеживается удержание:
По умолчанию: |
exclude | string | CSS-селектор элементов, которые нужно исключить из удержания По умолчанию: |
cancelOnDrag | boolean | Отменять удержание при старте drag По умолчанию: |
moveThreshold | number | Порог движения до отмены удержания (px). Если не задан, используется внутренний порог drag. По умолчанию: |
VisibilityOptions
Опции модуля отслеживания видимости
| Поле | Тип | Описание |
|---|---|---|
pauseAutoplay | boolean | Приостанавливать autoplay когда слайдер скрыт По умолчанию: |
pauseMarquee | boolean | Приостанавливать marquee когда слайдер скрыт По умолчанию: |
threshold | number | Порог видимости для IntersectionObserver (0…1) 0 = считается видимым если хоть что-то видно 1 = считается видимым только если виден полностью По умолчанию: |
BrowserFixesOptions
Опции для специфичных браузерных фиксов
| Поле | Тип | Описание |
|---|---|---|
firefoxImageDecoding | boolean | Firefox: добавлять атрибут decoding=“sync” к изображениям при предзагрузке. Предотвращает задержку отрисовки декодированных изображений в Firefox. По умолчанию: |
VideoProgressEvent
Payload события videoProgress
AutoplayProgressEvent
Payload события autoplayProgress
| Поле | Тип | Описание |
|---|---|---|
progress | number | Прогресс активного сегмента (0…1) |
index | number | Индекс активного слайда |
segmentIndex | number | Индекс активного сегмента (равен index) |
segmentProgress | number | Прогресс активного сегмента (0…1), алиас progress |
totalSegments | number | Общее количество сегментов (слайдов) |
VideoEvent
Payload событий video (play, pause, ended, ready)
NativeLazyAdjacentOptions
Принудительная подгрузка img с нативным loading=“lazy” для соседних и целевого слайда.
| Поле | Тип | Описание |
|---|---|---|
onInit | boolean | После инициализации слайдера — для слайдов prev/next относительно активного. Дополнительный трафик при загрузке страницы; по умолчанию выключено. По умолчанию: |
onTransitionStart | boolean | В начале перехода к другому слайду (событие beforeSlideChange), до анимации; то же при speed: 0. По умолчанию: |
LoopOptions
Расширенные опции бесконечной прокрутки.
| Поле | Тип | Описание |
|---|---|---|
enabled | boolean | Включить/выключить loop.
По умолчанию По умолчанию: |
withClones | boolean | Включить систему DOM-клонов для loop.
По умолчанию В режиме клонов индексы и события должны трактоваться так, как будто пользователь взаимодействует с оригинальными слайдами. По умолчанию: |
CenterOptions
Расширенные настройки центрирования слайдов.
| Поле | Тип | Описание |
|---|---|---|
active | boolean | Центрирует активный слайд в viewport (аналог center: true). По умолчанию: |
focus | boolean | Центрирует активный слайд, когда есть место; у краёв обрезает позицию
(аналог Splide По умолчанию: |
justify | boolean | Центрирует все слайды визуально когда locked (justify-content: center). По умолчанию: |
LazyloadControls
Explicit image loading controls, available when lazy is enabled.
| Поле | Тип | Описание |
|---|
VisibilityControls
Visibility controls, available when visibility is enabled.
| Поле | Тип | Описание |
|---|