Активный в центре
Режим центрирования позволяет располагать активный слайд по центру контейнера. Это полезно когда нужно выделить текущий слайд, показывая части соседних слайдов по бокам.
Основные возможности
- Центрирование активного слайда - активный слайд всегда находится по центру
- Классы состояний - автоматическое применение классов для активного, предыдущего, следующего и видимых слайдов
- Гибкая настройка - работает с любым значением
perPage - Плавная анимация - smooth переходы между слайдами
Базовый пример
Активный в центре
PerPage: 2 (Половинки по бокам)
Когда perPage: 2 и center: true, активный слайд находится по центру, а половинки предыдущего и следующего слайдов видны по бокам.
Center с двумя слайдами
PerPage: 4 (Множественные видимые слайды)
При perPage: 4 видны активный, предыдущий, следующий и кусочки других слайдов.
Center с четырьмя слайдами
Классы состояний слайдов
Модуль SlideStatesModule автоматически применяет следующие классы:
CSS классы
.tvist-v1__slide--active- активный слайд (по центру).tvist-v1__slide--prev- предыдущий слайд.tvist-v1__slide--next- следующий слайд.tvist-v1__slide--visible- видимые слайды (полностью или частично)
Пример стилизации
Center + Loop (Бесконечное центрирование)
Комбинация center: true и loop: true позволяет создать бесконечную карусель с активным элементом по центру.
Center и loop
Focus (focus: 'center')
center: { focus: true } стремится поставить активный слайд по центру viewport, но не создаёт пустоты у краёв: на первых и последних слайдах позиция обрезается до min/max scroll (аналог Splide trimSpace: true).
Отличие от center: true / active: true:
| Режим | Первый / последний слайд | Середина |
|---|---|---|
center: true |
всегда по центру | по центру |
center: { focus: true } |
прижат к краю, без пустот | по центру, если хватает места |
Center focus
Justify в lock-режиме
center: { justify: true } не центрирует активный слайд. Вместо этого слайды
выравниваются по центру только когда слайдер находится в locked состоянии.
Как только lock спадает, слайдер возвращается к обычному поведению.
Center justify при lock
Если нужно объединить оба режима (обычное center + justify при lock), используйте:
Как это работает
Логика центрирования
-
Расчет offset - вычисляется смещение для центрирования:
-
Позиционирование - к базовой позиции добавляется offset:
-
Обновление классов - при каждом изменении слайда обновляются классы состояний
Управление состояниями
SlideStatesModule отслеживает:
- Активный индекс - определяет текущий слайд
- Видимость - проверяет пересечение слайдов с контейнером через
getBoundingClientRect() - Соседние слайды - вычисляет prev/next с учетом loop режима
Совместимость с другими опциями
С Loop
С Drag
С Breakpoints
Особенности работы с Peek
Важно: В режиме
center: true(иactive: true) правилаpeekTrimдля выравнивания слайдов по краям не применяются — активный слайд всегда по центру. В режимеcenter: { focus: true }trim у краёв включён (как у Splide сtrimSpace).
Однако, peek (отступы контейнера) все еще учитываются при расчете доступного пространства для слайдов. Это значит, что peek уменьшает эффективную ширину области просмотра, в которой происходит центрирование.
Если вам нужно просто добавить видимость соседних слайдов, в режиме center это происходит естественно за счет центрирования и perPage, поэтому часто явное использование peek не требуется.
Преимущества
- Фокус на активном слайде - пользователь видит, какой слайд текущий
- Контекст - видны соседние слайды для лучшей навигации
- Гибкость - работает с любым
perPage - Performance - эффективная работа через классы CSS
Отличия от обычного режима
| Параметр | Обычный режим | Center режим |
|---|---|---|
| Позиция активного | Слева/сверху | По центру |
| EndIndex | slideCount - perPage |
slideCount - 1 |
| Навигация | По страницам | По слайдам |
| Классы состояний | Нет | Да (active, prev, next, visible) |
API
Опции
События
Классы обновляются автоматически на следующих событиях:
slideChangeStart- начало смены слайдаslideChangeEnd- завершение смены слайдаscroll- во время прокрутки (обновление видимости)
Методы
Все стандартные методы работают в center режиме:
Best Practices
- Используйте четное perPage -
2, 4, 6для симметричного вида - Стилизуйте активный слайд - сделайте его заметным через CSS
- Добавьте gap - расстояние между слайдами улучшает читаемость
- Тестируйте на разных размерах - используйте breakpoints для адаптивности
Troubleshooting
Активный слайд не по центру
Проверьте, что:
center: trueилиcenter: { active: true }указан в опциях- Контейнер имеет достаточную ширину для
perPageслайдов - CSS не переопределяет позиционирование
Классы не применяются
Убедитесь, что:
- Модуль
SlideStatesModuleзарегистрирован (автоматически при импорте Tvist) - Нет CSS конфликтов с классами
.tvist-v1__slide--*