Skip to content

API Документация

Полный справочник по API библиотеки Tvist.

Быстрая навигация

📋 Опции

Полный список всех доступных опций для настройки слайдера: базовые параметры, навигация, автоматизация, эффекты, адаптивность и обработчики событий.

⚡ Методы

Все методы для управления слайдером: навигация между слайдами, обновление состояния, динамическое изменение опций, работа с модулями и событиями.

🎯 Свойства

Доступные свойства экземпляра слайдера: элементы DOM, текущее состояние, информация о слайдах и конфигурация.

📡 События

События жизненного цикла, навигации, взаимодействия и обновления. Примеры подписки и использования.

🔧 Статические методы

Статические методы и свойства класса Tvist: версия библиотеки, регистрация модулей, управление реестром.

🧩 Модули

Встроенные модули и создание собственных: навигация, автопрокрутка, эффекты, адаптивность, grid, thumbs и другие.

📘 TypeScript

Полная типизация, generic типы, расширение интерфейсов, интеграция с фреймворками.


Обзор API

Создание слайдера

javascript
import Tvist from 'tvist'
import 'tvist/dist/tvist.css'

const slider = new Tvist('.slider', {
  perPage: 3,
  gap: 20,
  speed: 300,
  autoplay: 3000,
  pagination: true,
  arrows: true
})

Основные методы

javascript
// Навигация
slider.next()
slider.prev()
slider.scrollTo(2)

// Управление состоянием
slider.update()
slider.updateOptions({ perPage: 4 })
slider.destroy()

// Работа с событиями
slider.on('slideChangeStart', (index) => {
  console.log('Активный слайд:', index)
})

// Получение модуля
const autoplay = slider.getModule('autoplay')
autoplay?.pause()

Доступ к свойствам

javascript
// Текущее состояние
console.log(slider.activeIndex)
console.log(slider.slides.length)

// Проверка возможности навигации
if (slider.canScrollNext) {
  slider.next()
}

// Доступ к элементам
slider.root.classList.add('custom-class')
slider.container.style.padding = '20px'

Регистрация модулей

javascript
import { 
  AutoplayModule, 
  PaginationModule, 
  LoopModule 
} from 'tvist/modules'

// Глобальная регистрация
Tvist.registerModule('autoplay', AutoplayModule)
Tvist.registerModule('pagination', PaginationModule)
Tvist.registerModule('loop', LoopModule)

// Использование
const slider = new Tvist('.slider', {
  autoplay: 3000,
  pagination: true,
  loop: true
})

Опции слайдера

Tvist предоставляет обширный набор опций для настройки слайдера под ваши нужды. Подробнее см. страницу Опции.

ОпцияТипПо умолчаниюОписание
perPagenumber1Количество слайдов на странице (видимых одновременно).
slidesPerGroupnumber1Количество слайдов, пролистываемых за один раз.
autoWidthbooleanfalseЕсли true, ширина слайдов определяется их содержимым (не задаётся слайдером). Рекомендуется perPage: 1.
autoHeightbooleanfalseЕсли true, высота слайдов определяется их содержимым (для вертикального направления). Рекомендуется perPage: 1.
slideMinSizenumberundefinedМинимальный размер слайда (ширина или высота) для автоматического расчета perPage
gapnumber0Расстояние между слайдами в пикселях
peeknumber | stringundefinedPeek — отступы, показывающие часть соседних слайдов (чтобы было видно, что есть ещё слайды). Для горизонтального слайдера: left/right, для вертикального: top/bottom. peek: 10 peek: '1rem' peek: { left: 10, right: 20 } peek: { top: 10, bottom: 20 }
peekTrimbooleantruePeek trim: при true (по умолчанию) концовка прижимается к краю — последний слайд без дыры справа/снизу. При включённом loop не применяется.
speednumber300Скорость анимации перехода в миллисекундах
direction'horizontal' | 'vertical''horizontal'Направление прокрутки слайдера
centerbooleanfalseЦентрирование активного слайда. При true активный слайд будет находиться по центру контейнера.
debugbooleanfalseРежим отладки: вывод предупреждений в консоль (arrows not found, container not found и т.д.)
startnumber0Индекс начального слайда
dragboolean | 'free'trueВключить перетаскивание слайдов. 'free' - свободная прокрутка без привязки к слайдам
dragSpeednumber1Множитель скорости перетаскивания
rubberbandbooleantrueЭффект "резинки" при перетаскивании за границы
freeSnapbooleanfalseПривязка к слайдам в free режиме. Если true, после momentum scroll будет snap к ближайшему слайду
flickPowernumber600Сила инерции (flick power). Множитель для скорости при расчёте дистанции momentum scroll
flickMaxPagesnumber1Максимальное количество страниц для flick в обычном режиме
focusableElementsstring'button, a, input, select, textarea'CSS селектор для элементов, которые должны сохранять фокус при перетаскивании
preventClicksbooleantrueПредотвращать клики по слайдам во время перетаскивания
preventClicksPropagationbooleantrueПредотвращать распространение событий клика во время анимации
arrowsboolean | booleanfalseНавигационные стрелки. true - автоматическое создание, объект - кастомная настройка
paginationboolean | booleanfalseПагинация. true - автоматическое создание буллетов, объект - кастомная настройка
autoplayboolean | number | AutoplayOptionsfalseАвтопрокрутка слайдов. - `false` — выключена (по умолчанию) - `true` — включена с задержкой 3000мс и дефолтными настройками - `number` — включена с указанной задержкой в миллисекундах - `AutoplayOptions` — полный контроль: delay, pauseOnHover, pauseOnInteraction, disableOnInteraction, waitForVideo
videoboolean | VideoOptionsfalseУправление видео внутри слайдов (HTML `<video>` и iframe YouTube/Vimeo). - `false` — выключено (по умолчанию) - `true` — включено с дефолтными настройками - `VideoOptions` — полный контроль
visibilityboolean | VisibilityOptionstrueОтслеживание видимости слайдера для приостановки autoplay/marquee. - `false` — выключено - `true` — включено с дефолтными настройками (по умолчанию) - `VisibilityOptions` — полный контроль
browserFixesBrowserFixesOptions{ firefoxImageDecoding: true }Специфичные фиксы для браузеров
loopboolean | 'auto'falseБесконечная прокрутка. 'auto' - определяется автоматически на основе количества слайдов
rewindbooleanfalseАвтоматически возвращаться к первому слайду после достижения последнего (работает без loop) Применяется к навигации, autoplay и другим способам перехода между слайдами
lazyboolean | booleanfalseЛенивая загрузка изображений
effect'slide' | 'fade' | 'cube' | 'card''slide'Эффект перехода между слайдами
fadeEffectobjectundefinedНастройки fade эффекта
cubeEffectobjectundefinedНастройки cube эффекта
thumbsobjectundefinedСвязь с thumbnail-слайдером
isNavigationbooleanfalseЕсли true, слайдер будет вести себя как навигация (клики по слайдам делают их активными). Используется для создания thumbnail-слайдеров
virtualboolean | booleanfalseВиртуальные слайды для работы с большими списками
gridobjectundefinedСетка слайдов
marqueeboolean | booleanfalseРежим бегущей строки (непрерывная прокрутка)
keyboardboolean | booleanfalseУправление с клавиатуры (стрелки)
wheelboolean | booleanfalseУправление колёсиком мыши
scrollbarboolean | booleanfalseКастомный скроллбар для навигации
breakpointsboolean | objectundefinedАдаптивные настройки по breakpoints. Ключ - ширина экрана в пикселях
breakpointsBase'window' | 'container''window'База для расчёта breakpoints
enabledbooleantrueВключить/выключить слайдер. При false слайдер не инициализируется (статичный контент)
onobjectundefinedОбработчики событий слайдера

Примеры использования

Базовая настройка

javascript
const slider = new Tvist('.slider', {
  // Отображение
  perPage: 3,
  gap: 20,
  speed: 300,
  
  // Навигация
  arrows: true,
  pagination: { type: 'bullets' },
  
  // Автоматизация
  autoplay: 3000,
  loop: true
})

Адаптивный слайдер

javascript
const slider = new Tvist('.slider', {
  perPage: 1,
  gap: 10,
  
  breakpoints: {
    640: { perPage: 2, gap: 15 },
    1024: { perPage: 3, gap: 20 },
    1440: { perPage: 4, gap: 30 }
  }
})

С событиями

javascript
const slider = new Tvist('.slider', {
  on: {
    created: (tvist) => {
      console.log('Слайдер создан')
    },
    slideChangeStart: (index) => {
      console.log('Переход к слайду:', index)
    },
    resize: () => {
      console.log('Размер изменился')
    }
  }
})

Динамическое изменение

javascript
// Изменение опций на лету
slider.updateOptions({ perPage: 4, gap: 30 })

// Адаптация под размер экрана
window.addEventListener('resize', () => {
  const width = window.innerWidth
  
  if (width < 768) {
    slider.updateOptions({ perPage: 1 })
  } else if (width < 1024) {
    slider.updateOptions({ perPage: 2 })
  } else {
    slider.updateOptions({ perPage: 3 })
  }
})

Управление автопрокруткой

javascript
const slider = new Tvist('.slider', {
  autoplay: { delay: 3000, pauseOnHover: true }
})

const autoplay = slider.getModule('autoplay')

// Управление
document.querySelector('.pause-btn').addEventListener('click', () => {
  autoplay?.pause()
})

document.querySelector('.play-btn').addEventListener('click', () => {
  autoplay?.start()
})

Полезные ссылки