Опции слайдера
Полный справочник всех доступных опций для настройки Tvist слайдера.
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
perPage | number | 1 | Количество слайдов на странице (видимых одновременно). |
slidesPerGroup | number | 1 | Количество слайдов, пролистываемых за один раз. |
autoWidth | boolean | false | Если true, ширина слайдов определяется их содержимым (не задаётся слайдером). Рекомендуется perPage: 1. |
autoHeight | boolean | false | Если true, высота слайдов определяется их содержимым (для вертикального направления). Рекомендуется perPage: 1. |
slideMinSize | number | undefined | Минимальный размер слайда (ширина или высота) для автоматического расчета perPage |
gap | number | 0 | Расстояние между слайдами в пикселях |
peek | number | string | undefined | Peek — отступы, показывающие часть соседних слайдов (чтобы было видно, что есть ещё слайды). Для горизонтального слайдера: left/right, для вертикального: top/bottom. peek: 10 peek: '1rem' peek: { left: 10, right: 20 } peek: { top: 10, bottom: 20 } |
peekTrim | boolean | true | Peek trim: при true (по умолчанию) концовка прижимается к краю — последний слайд без дыры справа/снизу. При включённом loop не применяется. |
speed | number | 300 | Скорость анимации перехода в миллисекундах |
direction | 'horizontal' | 'vertical' | 'horizontal' | Направление прокрутки слайдера |
center | boolean | false | Центрирование активного слайда. При true активный слайд будет находиться по центру контейнера. |
debug | boolean | false | Режим отладки: вывод предупреждений в консоль (arrows not found, container not found и т.д.) |
start | number | 0 | Индекс начального слайда |
drag | boolean | 'free' | true | Включить перетаскивание слайдов. 'free' - свободная прокрутка без привязки к слайдам |
dragSpeed | number | 1 | Множитель скорости перетаскивания |
rubberband | boolean | true | Эффект "резинки" при перетаскивании за границы |
freeSnap | boolean | false | Привязка к слайдам в free режиме. Если true, после momentum scroll будет snap к ближайшему слайду |
flickPower | number | 600 | Сила инерции (flick power). Множитель для скорости при расчёте дистанции momentum scroll |
flickMaxPages | number | 1 | Максимальное количество страниц для flick в обычном режиме |
focusableElements | string | 'button, a, input, select, textarea' | CSS селектор для элементов, которые должны сохранять фокус при перетаскивании |
preventClicks | boolean | true | Предотвращать клики по слайдам во время перетаскивания |
preventClicksPropagation | boolean | true | Предотвращать распространение событий клика во время анимации |
arrows | boolean | boolean | false | Навигационные стрелки. true - автоматическое создание, объект - кастомная настройка |
pagination | boolean | boolean | false | Пагинация. true - автоматическое создание буллетов, объект - кастомная настройка |
autoplay | boolean | number | AutoplayOptions | false | Автопрокрутка слайдов. - `false` — выключена (по умолчанию) - `true` — включена с задержкой 3000мс и дефолтными настройками - `number` — включена с указанной задержкой в миллисекундах - `AutoplayOptions` — полный контроль: delay, pauseOnHover, pauseOnInteraction, disableOnInteraction, waitForVideo |
video | boolean | VideoOptions | false | Управление видео внутри слайдов (HTML `<video>` и iframe YouTube/Vimeo). - `false` — выключено (по умолчанию) - `true` — включено с дефолтными настройками - `VideoOptions` — полный контроль |
visibility | boolean | VisibilityOptions | true | Отслеживание видимости слайдера для приостановки autoplay/marquee. - `false` — выключено - `true` — включено с дефолтными настройками (по умолчанию) - `VisibilityOptions` — полный контроль |
browserFixes | BrowserFixesOptions | { firefoxImageDecoding: true } | Специфичные фиксы для браузеров |
loop | boolean | 'auto' | false | Бесконечная прокрутка. 'auto' - определяется автоматически на основе количества слайдов |
rewind | boolean | false | Автоматически возвращаться к первому слайду после достижения последнего (работает без loop) Применяется к навигации, autoplay и другим способам перехода между слайдами |
lazy | boolean | boolean | false | Ленивая загрузка изображений |
effect | 'slide' | 'fade' | 'cube' | 'card' | 'slide' | Эффект перехода между слайдами |
fadeEffect | object | undefined | Настройки fade эффекта |
cubeEffect | object | undefined | Настройки cube эффекта |
thumbs | object | undefined | Связь с thumbnail-слайдером |
isNavigation | boolean | false | Если true, слайдер будет вести себя как навигация (клики по слайдам делают их активными). Используется для создания thumbnail-слайдеров |
virtual | boolean | boolean | false | Виртуальные слайды для работы с большими списками |
grid | object | undefined | Сетка слайдов |
marquee | boolean | boolean | false | Режим бегущей строки (непрерывная прокрутка) |
keyboard | boolean | boolean | false | Управление с клавиатуры (стрелки) |
wheel | boolean | boolean | false | Управление колёсиком мыши |
scrollbar | boolean | boolean | false | Кастомный скроллбар для навигации |
breakpoints | boolean | object | undefined | Адаптивные настройки по breakpoints. Ключ - ширина экрана в пикселях |
breakpointsBase | 'window' | 'container' | 'window' | База для расчёта breakpoints |
enabled | boolean | true | Включить/выключить слайдер. При false слайдер не инициализируется (статичный контент) |
on | object | undefined | Обработчики событий слайдера |
Группировка опций
Таблица выше содержит все опции; ниже они сгруппированы по смыслу.
Базовые настройки
perPage— количество видимых слайдовslidesPerGroup— количество слайдов, пролистываемых за раз (next/prev)slideMinSize— минимальный размер слайда для авто-расчёта perPagecenter— центрирование активного слайдаautoWidth— ширина слайдов по содержимому (горизонтальный слайдер)autoHeight— высота слайдов по содержимому (вертикальный слайдер)gap— расстояние между слайдамиpeek— отступы, показывающие часть соседних слайдов (число, строка или объектleft/right/top/bottom)peekTrim— прижатие концовки к краю при peek (по умолчаниюtrue; при loop не применяется)speed— скорость анимации (мс)direction— направление прокрутки (horizontal|vertical)start— индекс начального слайдаdebug— режим отладки (предупреждения в консоль только приdebug: true)
Управление перетаскиванием
drag— включение/отключение перетаскивания (true|false|'free')dragSpeed— множитель скорости перетаскиванияrubberband— эффект резинки на краяхfreeSnap— snap к слайдам в режимеdrag: 'free'flickPower— сила инерции (множитель для momentum scroll)flickMaxPages— максимум страниц за один flickfocusableElements— CSS-селектор элементов, сохраняющих фокус при перетаскиванииpreventClicks— блокировать клики по слайдам во время перетаскиванияpreventClicksPropagation— не всплывать клику во время анимации
Навигация
arrows— стрелки (true или объект сprev,next,disabledClass,hiddenClass,addIcons,hideWhenSinglePage; селекторы/элементы могут быть вне root, см. Примеры навигации)pagination— пагинация (true или объект сcontainer,type,clickable,bulletClass,bulletActiveClass,renderBullet/renderFraction/renderCustom,hideWhenSinglePage,limit,strategy,remainderStrategy;containerможет быть вне root)keyboard— управление с клавиатуры (true или объект сenabled,onlyInViewport)wheel— управление колёсиком мыши (true или объект сsensitivity,releaseOnEdges)scrollbar— кастомный скроллбар (true или объект сcontainer,hide,hideDelay,scrollbarClass,trackClass,thumbClass,draggable)
Автоматизация и медиа
autoplay— автопрокрутка (false|true| число мс или объект сdelay,pauseOnHover,pauseOnInteraction,disableOnInteraction,waitForVideo)video— управление видео в слайдах (false|trueили объект сautoplay,muted,loop,playsinline,pauseOnLeave,resetOnLeave)visibility— учёт видимости слайдера в viewport для паузы autoplay/marquee (trueпо умолчанию или объект сpauseAutoplay,pauseMarquee,threshold)
Режимы отображения
autoWidth/autoHeight— размер слайдов по содержимомуloop— бесконечная прокрутка (true|false|'auto')rewind— возврат к первому слайду после последнего (без loop)effect— эффект перехода (slide|fade|cube|card)fadeEffect— настройки fade (напримерcrossFade)cubeEffect— настройки cube (slideShadows,shadow,shadowOffset,shadowScale,perspective,perspectiveOriginY,viewportPadding)virtual— виртуальные слайды (объект сaddSlidesBefore,addSlidesAfter,renderSlide)grid— сетка (объект сrows,cols,gap,dimensions)marquee— бегущая строка (true| объект сspeed,direction,pauseOnHover)
Дополнительно
enabled— включение/отключение слайдера (приfalse— статичный контент)lazy— ленивая загрузка изображений (true или объект сpreloadPrevNext)thumbs— связь с слайдером-миниатюрами ({ slider: Tvist })isNavigation— режим навигации (клики по слайдам переключают слайд)breakpoints— адаптивные настройки (ключ — ширина в px, в т.ч.enabledвнутри брейкпоинта)breakpointsBase— база для расчёта breakpoints ('window'|'container')on— объект с обработчиками событий (см. События)
Примеры использования
Базовая конфигурация
const slider = new Tvist('.slider', {
perPage: 3,
gap: 20,
speed: 400,
arrows: true,
pagination: true
})С автопрокруткой и loop
const slider = new Tvist('.slider', {
perPage: 1,
autoplay: { delay: 3000, pauseOnHover: true },
loop: true
})Drag Free Mode
// Свободная прокрутка без snap
const slider = new Tvist('.slider', {
drag: 'free',
perPage: 3,
gap: 20
})
// Свободная прокрутка с автоматическим snap
const sliderWithSnap = new Tvist('.slider', {
drag: 'free',
freeSnap: true, // Выравнивание к слайду после остановки
perPage: 3,
gap: 20
})Адаптивный слайдер
const slider = new Tvist('.slider', {
perPage: 1,
gap: 10,
breakpoints: {
640: {
perPage: 2,
gap: 15
},
1024: {
perPage: 3,
gap: 20
}
}
})Сетка на десктопе, слайдер на мобильных
const slider = new Tvist('.slider', {
// По умолчанию (десктоп) - отключен
enabled: false,
perPage: 1,
gap: 16,
drag: true,
pagination: true,
// На мобильных - включен
breakpoints: {
767: {
enabled: true // Слайдер активен на экранах ≤767px
}
}
})С эффектами
const slider = new Tvist('.slider', {
effect: 'fade',
fadeEffect: {
crossFade: true
},
speed: 600
})Полная конфигурация
const slider = new Tvist('.slider', {
// Базовые
perPage: 3,
gap: 20,
speed: 400,
direction: 'horizontal',
start: 0,
// Управление
drag: true,
dragSpeed: 1,
rubberband: true,
// Навигация
arrows: true,
pagination: {
type: 'bullets',
clickable: true
},
keyboard: true,
// Автоматизация
autoplay: { delay: 5000, pauseOnHover: true },
loop: true,
// Адаптивность
breakpoints: {
640: { perPage: 1, gap: 10 },
1024: { perPage: 2, gap: 15 }
},
// События
on: {
slideChangeStart: (index) => {
console.log('Активный слайд:', index)
}
}
})Приоритет опций
При использовании breakpoints, опции из соответствующего breakpoint переопределяют базовые опции. Например:
const slider = new Tvist('.slider', {
perPage: 3, // Базовое значение
breakpoints: {
640: {
perPage: 1 // На экранах >= 640px будет 1 слайд
}
}
})Динамическое изменение опций
Tvist поддерживает динамическое изменение большинства опций без пересоздания слайдера. Используйте метод updateOptions() для обновления настроек на лету.
Метод updateOptions()
// Изменить одну опцию
slider.updateOptions({ perPage: 3 })
// Изменить несколько опций
slider.updateOptions({
perPage: 2,
gap: 30,
speed: 500
})
// Цепочка вызовов
slider
.updateOptions({ perPage: 3 })
.scrollTo(0)Поддерживаемые опции
Метод updateOptions() поддерживает изменение следующих опций:
Базовые настройки
perPage- количество слайдов на страницеslideMinSize- минимальный размер слайдаgap- расстояние между слайдамиpeek- отступы слайдераpeekTrim- обрезка peek на краяхspeed- скорость анимацииdirection- направление прокрутки (horizontal/vertical)center- центрирование активного слайда
Drag
drag- включение/отключение перетаскиванияdragSpeed- скорость перетаскиванияrubberband- эффект резинки
Autoplay
autoplay- автопрокрутка (число,true,falseили объект сdelay,pauseOnHover,pauseOnInteraction,disableOnInteraction,waitForVideo)
События
on- обработчики событий (заменяют предыдущие)
Примеры использования
Адаптация под размер экрана
const updateSliderForScreen = () => {
const width = window.innerWidth
if (width < 768) {
slider.updateOptions({ perPage: 1, gap: 10 })
} else if (width < 1024) {
slider.updateOptions({ perPage: 2, gap: 20 })
} else {
slider.updateOptions({ perPage: 3, gap: 30 })
}
}
window.addEventListener('resize', updateSliderForScreen)
updateSliderForScreen()Переключение направления
const toggleDirection = () => {
const current = slider.options.direction
slider.updateOptions({
direction: current === 'horizontal' ? 'vertical' : 'horizontal'
})
}
document.querySelector('.toggle-btn').addEventListener('click', toggleDirection)Управление автопрокруткой
// Включить автопрокрутку
slider.updateOptions({ autoplay: 3000 })
// Отключить автопрокрутку
slider.updateOptions({ autoplay: false })
// Изменить скорость
slider.updateOptions({ autoplay: 5000 })Динамическое изменение gap и peek
// Изменить отступы
slider.updateOptions({
gap: 40,
peek: { left: 20, right: 20 }
})
// Убрать peek
slider.updateOptions({ peek: 0 })Обновление обработчиков событий
slider.updateOptions({
on: {
slideChangeStart: (index) => {
console.log('Новый обработчик:', index)
// Новая логика
}
}
})Событие optionsUpdated
При вызове updateOptions() генерируется событие optionsUpdated:
slider.on('optionsUpdated', (tvist, newOptions) => {
console.log('Обновлены опции:', newOptions)
// Выполнить дополнительную логику
if (newOptions.perPage) {
updatePaginationUI()
}
})Пересоздание слайдера (legacy подход)
Если вам нужно изменить опции, которые не поддерживают динамическое обновление (например, регистрация новых модулей), используйте старый подход с пересозданием:
// Сохраняем текущее состояние
const currentIndex = slider.activeIndex
// Уничтожаем старый экземпляр
slider.destroy()
// Создаём новый с другими опциями
const newSlider = new Tvist('.slider', {
perPage: 4,
gap: 30,
start: currentIndex // Восстанавливаем позицию
})Ограничения
Некоторые опции не могут быть изменены динамически, так как они влияют на инициализацию модулей:
- Регистрация новых модулей требует пересоздания слайдера
- Изменение
loopможет работать некорректно (требуется пересоздание) - Опции, связанные с DOM-структурой модулей
Для таких случаев используйте подход с destroy() и созданием нового экземпляра.