Адаптивное количество
Адаптивный слайдер с автоматической подстройкой под разные размеры экрана.
Адаптивное количество
Container-first
Tvist — container-first слайдер: размеры слайдов и расчёт perPage всегда основаны на ширине контейнера (корневого элемента слайдера), а не окна браузера.
- ResizeObserver следит за контейнером: при изменении его размера (окно, сайдбар, grid, модалка) слайдер пересчитывает размеры и обновляется.
- slideMinSize —
perPageсчитается от ширины контейнера. - Breakpoints по умолчанию привязаны к окну (viewport) для удобства; при необходимости можно переключить на ширину контейнера через
breakpointsBase: 'container'.
Это позволяет корректно работать слайдеру внутри узких колонок, модальных окон и любых контекстов, где ширина контейнера не совпадает с шириной окна.
Описание
Адаптивность — ключевая функция современных слайдеров. Tvist предлагает несколько способов сделать слайдер отзывчивым:
- Breakpoints — явно задайте настройки для разных ширин (по умолчанию — окна; опционально — контейнера)
- slideMinSize — автоматический расчёт
perPageот ширины контейнера - breakpointsBase — breakpoints относительно окна или контейнера
Способ 1: Breakpoints
Window-based breakpoints (по умолчанию)
Как это работает:
- Базовые настройки (
perPage: 4) применяются по умолчанию (на больших экранах) - При ширине окна ≤ 1200px применяются настройки из
breakpoints[1200] - Breakpoints работают по принципу
max-width(как в CSS media queries) - Используется native
matchMediaAPI для оптимальной производительности
Container-based breakpoints
Когда использовать:
- Слайдер в боковой колонке
- Модальные окна переменной ширины
- Компоненты в grid-layout
- Любые случаи, где ширина контейнера не равна ширине окна
Способ 2: slideMinSize (автоматический расчет)
Как это работает:
- Tvist автоматически рассчитывает, сколько слайдов поместится в контейнер (container-first)
- Формула:
perPage = floor((containerWidth + gap) / (slideMinSize + gap)) - При изменении размера контейнера (ResizeObserver)
perPageпересчитывается автоматически - Минимум:
perPage = 1
Преимущества:
- Не нужно вручную прописывать все breakpoints
- Плавная адаптация под любые размеры экрана
- Идеально для fluid/responsive дизайна
Комбинирование подходов
Можно комбинировать slideMinSize с breakpoints для тонкой настройки:
HTML разметка
Практические рекомендации
Desktop First стратегия
Mobile First стратегия
Примечание: Tvist использует max-width логику, поэтому Desktop First подход более естественен.
Адаптивные gaps
События и callbacks
Производительность
Оптимизации в Tvist:
matchMediaAPI используется для window-based breakpoints (нет постоянных проверок)- Container-based режим использует throttled resize observer
- Пересчеты происходят только при реальном изменении breakpoint
- События
breakpointиresizeдебаунсятся
Сравнение подходов
| Подход | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| Breakpoints | Полный контроль, предсказуемость | Нужно задавать вручную | Дизайн с четкими breakpoints |
| slideMinSize | Автоматика, гибкость | Менее предсказуемо | Fluid дизайн, много размеров |
| Container-based | Работает в любом контексте | Больше ресурсов | Боковые панели, модальные окна |
Модули и брейкпоинты
Модули (pagination, arrows и др.) полностью реагируют на смену брейкпоинта: при переходе в брейкпоинт модуль инициализируется, при выходе — уничтожается.
Это позволяет, например, показывать пагинацию только на мобильных устройствах:
Аналогично работает для стрелок (arrows), автоплея (autoplay) и любых других модулей.
Адаптивная пагинация (limit по breakpoints)
В breakpoints можно менять не только perPage и gap, но и опции модулей, например pagination.limit — максимальное количество видимых точек. На десктопе можно показывать 7 точек, на планшете 5, на мобиле 3:
При смене breakpoint вызывается update(), пагинация перерисовывается с новым limit.
Lock на десктопе, листание на мобиле
Если на десктопе слайдов ровно на одну страницу (например perPage: 2 и 2 слайда), слайдер «заблокирован» — одна страница, листать нечего. При включённом hideWhenSinglePage (по умолчанию) стрелки и пагинация автоматически скрываются. На мобиле при perPage: 1 те же 2 слайда дают две страницы — стрелки и пагинация появляются, слайдер листается.
Итого: на широком экране блок статичен (без стрелок и точек), на узком — полноценный слайдер.
Связанные примеры
- PerPage Example — базовое использование
perPage - Basic Example — основы слайдера
- Modules — комбинирование с другими модулями