Методы
Все методы слайдера возвращают экземпляр this для поддержки цепочки вызовов.
Список методов
Навигация
scrollTo()- Переход к указанному слайдуnext()- Переход к следующему слайдуprev()- Переход к предыдущему слайду
Управление состоянием
update()- Обновление размеров и позицийupdateOptions()- Динамическое изменение опцийdestroy()- Уничтожение экземпляра
Работа с модулями
getModule()- Получение экземпляра модуля
Синхронизация
sync()- Синхронизация с другим слайдером
События
on()- Подписка на событиеoff()- Отписка от событияonce()- Подписка на одно срабатываниеemit()- Вызов события
Навигация
scrollTo()
scrollTo(index: number, instant?: boolean): thisПереход к указанному слайду.
Параметры:
index- индекс целевого слайда (начиная с 0)instant- еслиtrue, переход будет мгновенным без анимации (по умолчаниюfalse)
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
slider.scrollTo(2) // Переход к третьему слайду с анимацией
slider.scrollTo(0, true) // Моментальный переход к первому слайду
// Цепочка вызовов
slider.scrollTo(2).scrollTo(4)next()
next(): thisПереход к следующему слайду.
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
slider.next()
// С условием
if (slider.canScrollNext) {
slider.next()
}prev()
prev(): thisПереход к предыдущему слайду.
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
slider.prev()
// С условием
if (slider.canScrollPrev) {
slider.prev()
}Управление состоянием
update()
update(): thisПринудительное обновление слайдера. Пересчитывает размеры, позиции слайдов и обновляет все модули. Используйте этот метод если изменилась DOM-структура или размеры контейнера.
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
// После изменения размера контейнера
document.querySelector('.slider').style.width = '800px'
slider.update()
// После добавления/удаления слайдов
slider.container.appendChild(newSlide)
slider.update()
// После изменения CSS
document.body.classList.toggle('mobile-view')
slider.update()updateOptions()
updateOptions(newOptions: Partial<TvistOptions>): thisДинамическое обновление опций слайдера без пересоздания экземпляра.
Параметры:
newOptions- объект с новыми опциями (можно передать только те опции, которые нужно изменить)
Возвращает: экземпляр слайдера для цепочки вызовов
Поддерживаемые опции для динамического изменения:
perPage- количество слайдов на страницеslideMinSize- минимальный размер слайдаgap- расстояние между слайдамиpeek- отступы слайдераpeekTrim- обрезка peek на краяхspeed- скорость анимацииdirection- направление прокруткиcenter- центрирование активного слайдаdrag,dragSpeed,rubberband- настройки dragautoplay- настройки автопрокрутки (число,true/falseили объект сdelay,pauseOnHover,pauseOnInteraction,disableOnInteraction,waitForVideo)on- обработчики событий (заменяют предыдущие)- и другие опции модулей
Примеры:
// Изменить количество слайдов
slider.updateOptions({ perPage: 3 })
// Изменить несколько опций сразу
slider.updateOptions({
perPage: 2,
gap: 30,
speed: 500
})
// Изменить направление
slider.updateOptions({ direction: 'vertical' })
// Обновить обработчики событий
slider.updateOptions({
on: {
slideChangeStart: (index) => {
console.log('Новый обработчик:', index)
}
}
})
// Цепочка вызовов
slider
.updateOptions({ perPage: 3 })
.scrollTo(0)События:
При вызове updateOptions() генерируется событие optionsUpdated:
slider.on('optionsUpdated', (tvist, newOptions) => {
console.log('Обновлены опции:', newOptions)
})Динамическое изменение
Метод updateOptions() позволяет изменять большинство опций без пересоздания слайдера. Это значительно удобнее и производительнее, чем вызов destroy() и создание нового экземпляра.
Ограничения
Некоторые опции, связанные с инициализацией DOM-структуры (например, создание модулей), могут потребовать полного пересоздания слайдера.
destroy()
destroy(): thisУничтожение экземпляра слайдера. Удаляет все обработчики событий, останавливает анимации, очищает модули и освобождает ресурсы.
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
slider.destroy()
// С очисткой DOM
slider.destroy()
slider.root.remove()Работа с модулями
getModule()
getModule<T>(name: string): T | undefinedПолучить экземпляр модуля по имени.
Параметры:
name- имя модуля
Возвращает: экземпляр модуля или undefined
Примеры:
// Получить модуль автопрокрутки
const autoplay = slider.getModule('autoplay')
if (autoplay) {
autoplay.pause()
}
// С типизацией (TypeScript)
import type { AutoplayModule } from 'tvist/modules'
const autoplay = slider.getModule<AutoplayModule>('autoplay')
if (autoplay) {
autoplay.pause()
autoplay.start()
}
// Получить модуль пагинации
const pagination = slider.getModule('pagination')
if (pagination) {
pagination.update()
}Синхронизация
sync()
sync(target: Tvist): thisСинхронизация с другим экземпляром Tvist. Используется для создания связанных слайдеров (например, основной слайдер + миниатюры).
Параметры:
target- целевой экземпляр слайдера для синхронизации
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
const main = new Tvist('.main-slider', {
perPage: 1
})
const thumbs = new Tvist('.thumbs-slider', {
perPage: 5,
gap: 10,
isNavigation: true
})
// Синхронизируем слайдеры
main.sync(thumbs)
// Теперь при переключении в main автоматически переключается thumbs и наоборотСобытия
on()
on(event: string, handler: Function): thisПодписаться на событие.
Параметры:
event- имя событияhandler- функция-обработчик
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
slider.on('slideChangeStart', (index) => {
console.log('Активный слайд:', index)
})
// Множественные подписки
slider
.on('slideChangeStart', handler1)
.on('resize', handler2)
.on('dragEnd', handler3)off()
off(event: string, handler?: Function): thisОтписаться от события.
Параметры:
event- имя событияhandler- функция-обработчик (если не указана, удаляются все обработчики события)
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
const handler = (index) => console.log(index)
// Подписка
slider.on('slideChangeStart', handler)
// Отписка от конкретного обработчика
slider.off('slideChangeStart', handler)
// Отписка от всех обработчиков события
slider.off('slideChangeStart')once()
once(event: string, handler: Function): thisПодписаться на событие один раз.
Параметры:
event- имя событияhandler- функция-обработчик
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
slider.once('slideChangeStart', (index) => {
console.log('Выполнится только один раз:', index)
})
// После первого срабатывания обработчик автоматически удаляетсяemit()
emit(event: string, ...args: any[]): thisВызвать событие программно.
Параметры:
event- имя событияargs- аргументы для передачи обработчикам
Возвращает: экземпляр слайдера для цепочки вызовов
Примеры:
// Вызвать пользовательское событие
slider.emit('customEvent', { data: 'value' })
// С обработчиком
slider.on('customEvent', (data) => {
console.log(data) // { data: 'value' }
})
slider.emit('customEvent', { data: 'value' })Цепочка вызовов
Все методы поддерживают цепочку вызовов:
slider
.updateOptions({ perPage: 3 })
.scrollTo(0)
.on('slideChangeStart', handler)
.next()