Skip to content

CdsCarousel

New in v4.0

Карусель показывает изображения или произвольный контент слайд за слайдом: промо-баннеры, фотогалереи, шаги онбординга. Стрелки и точки-делимитеры дают навигацию, автопрокрутка листает слайды сама, а прогресс-бар показывает позицию.

Storybook GitLab
Покрытие тестами: тестов нет

У компонента пока нет автотестов: поведение проверено только вручную.

API в спеках
0 / 68 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
0 юнит · 0 браузерных
Покрытие кода
11.1% строк · 0% ветвей замер v4.0.0-alpha.13
A11y (axe)
7 рекомендаций в 13 историях замер v4.0.0-alpha.11

Для переключения контента без делимитеров и автопрокрутки возьмите CdsSlideView, на котором построена карусель, а для одиночного изображения — CdsImage.

Анатомия ​

Карусель складывается из слайдов, стрелок навигации, точек-делимитеров и опционального прогресс-бара. Стрелки и точки листают по кругу: после последнего слайда идёт первый.

Вариации ​

Изображения ​

CdsCarouselItem объединяет слайд и CdsImage — передавайте ему любые пропсы изображения: src, alt, cover, gradient. Высоту карусели задаёт проп height (по умолчанию 500).

Sandbox Storybook

Произвольный контент ​

Слайд не обязан быть картинкой: положите в слот CdsCarouselItem любую разметку — она растянется на весь кадр.

Sandbox Storybook

Автопрокрутка ​

Проп cycle листает слайды автоматически, interval задаёт паузу в миллисекундах (по умолчанию 6000). Таймер перезапускается после ручного переключения — пользователь всегда успевает досмотреть слайд.

Sandbox Storybook

Прогресс ​

Проп progress добавляет прогресс-бар позиции внизу карусели. Значение-строка задаёт цвет — любой из токенов, которые принимает CdsProgressBar.

Sandbox Storybook

Делимитеры ​

Пропы управляют точками навигации: hide-delimiters убирает их совсем, hide-delimiter-background — только подложку, vertical-delimiters (left / right) ставит точки вертикально у края, delimiter-icon меняет иконку точки.

Sandbox Storybook

Слот item заменяет точку своим элементом: он получает готовые пропсы делимитера (клик, aria-label, класс активности) и сам элемент группы — останется только развесить их через v-bind.

Sandbox Storybook

Стрелки ​

Пропы стрелок наследуются от CdsSlideView: show-arrows="hover" показывает их только при наведении, :show-arrows="false" убирает совсем, prev-icon / next-icon меняют иконки, а слоты prev / next — сами кнопки.

Sandbox Storybook

Рекомендации ​

Сценарии использования ​

Промо-баннеры ​

Классическая ротация баннеров: cycle с interval в 5 секунд листает сам, progress показывает, когда сменится слайд. Текст и кнопка лежат в слоте слайда, а gradient из CdsImage затемняет верх кадра под ними — так они читаются на любом изображении.

Sandbox Storybook

Галерея с миниатюрами ​

Точки заменены миниатюрами: hide-delimiters убирает штатные делимитеры, а клик по миниатюре меняет v-model. Счётчик рядом считает слайды от того же v-model — карусель, миниатюры и счётчик всегда синхронны.

Sandbox Storybook

Вертикальная лента ​

Лента историй в духе соцсетей: direction="vertical" листает кадры сверху вниз, vertical-arrows="left" и vertical-delimiters="right" разводят стрелки и точки по боковым краям, освобождая кадр. Карточка автора и счётчик лежат в абсолютном слое поверх карусели: pointer-events-none пропускает клики к стрелкам, а транзишен по ключу v-model меняет карточку вместе со слайдом.

Sandbox Storybook

Онбординг ​

Шаги знакомства с продуктом: стрелки выключены (:show-arrows="false"), движение контролируют кнопки «Назад» и «Далее» через v-model. На последнем шаге «Далее» превращается в призыв к действию.

Sandbox Storybook

API ​

CdsCarousel ​

Пропсы

ИмяТипПо умолчаниюОписание
colorstring | undefined—Цвет активного делимитера и прогресс-бара
continuousboolean | undefinedtrueЗацикливает перелистывание: с последнего слайда переход ведёт на первый и наоборот
crossfadeboolean | undefined—Слайды сменяются плавным перекрестным затуханием вместо сдвига
cycleboolean | undefined—Автоматическое переключение слайдов через заданный интервал
delimiterIconIconValue | undefined'dot'Иконка делимитера (точки навигации)
direction"horizontal" | "vertical" | undefined'horizontal'Переключение между горизонтальным или вертикальным отображением.
disabledboolean | null | undefinednullЗаблокированное состояние
heightstring | number | undefined500Высота карусели
hideDelimiterBackgroundboolean | undefined—Скрыть подложку под делимитерами
hideDelimitersboolean | undefined—Скрыть делимитеры (точки навигации)
intervalstring | number | undefined6000Интервал автопереключения слайдов в миллисекундах (при включённом cycle)
mandatoryboolean | "force" | undefined'force'Обязательный выбор хотя бы одного элемента
maxnumber | undefined—Максимальное количество выбираемых элементов
modelValueany—Значение выбранных элементов группы
multipleboolean | undefined—Разрешить множественный выбор
nextIconIconValue | undefined'chevron-right'Иконка кнопки перехода к следующему слайду
prevIconIconValue | undefined'chevron-left'Иконка кнопки перехода к предыдущему слайду
progressstring | boolean | undefined—Отображать прогресс-бар текущего слайда. Строка задаёт цвет прогресс-бара
requiredboolean | "force" | undefined—Обязательный выбор хотя бы одного элемента
reverseboolean | undefined—Инвертирует направление анимации перехода между слайдами
selectedClassstring | undefined—CSS класс для выбранного состояния
showArrowsstring | boolean | undefinedtrueПоказывает стрелки навигации. 'hover' — только при наведении на компонент
tagstring | JSXComponent<any> | undefined'div'Пользовательский HTML-тег для отображения
themestring | undefined—Тема компонента
touchboolean | TouchHandlers | undefined—Управление перелистыванием свайпом: false отключает жесты, объект задаёт собственные обработчики касаний
transitionDurationnumber | undefined—Длительность анимации перехода между слайдами в миллисекундах
verticalArrowsboolean | "left" | "right" | undefined—Размещает стрелки навигации вертикально: 'left' или 'right' — сторона, true — сторона по умолчанию
verticalDelimitersboolean | "left" | "right" | undefined—Вертикальное расположение делимитеров: left, right или true (слева)

События

ИмяТипОписание
update:modelValue[]Срабатывает при смене активного слайда.

Слоты

ИмяТипОписание
default{ group: GroupProvide; }Слайды. В параметрах — состояние группы для управления активным слайдом
item{ props: CarouselDelimiterProps; item: { id: string; value: unknown; disabled: boolean | undefined; }; }Кастомный делимитер (точка навигации) для каждого слайда.
next{ props: ControlProps; }Кнопка перехода к следующему слайду. В параметрах — готовые пропсы для своей кнопки
prev{ props: ControlProps; }Кнопка перехода к предыдущему слайду. В параметрах — готовые пропсы для своей кнопки

CdsCarouselItem ​

Пропсы

ИмяТипПо умолчаниюОписание
absoluteboolean | undefined—Позиционирует изображение как position: absolute, заполняя родителя.
altstring | undefined—Альтернативный текст изображения (атрибут alt).
aspectRatiostring | number | undefined—Соотношение сторон контента. Например 1.7778 (16/9) или '4/3'.
colorstring | undefined—Цвет фона-плейсхолдера, отображаемого во время загрузки.
contentClassany—CSS-класс, применяемый к обёртке контента.
coverboolean | undefined—Масштабирует изображение, чтобы оно полностью закрывало контейнер (object-fit: cover).
crossorigin"" | "anonymous" | "use-credentials" | undefined—Значение атрибута crossorigin.
disabledboolean | null | undefinednullЗаблокированное состояние
draggableboolean | "true" | "false" | undefined—Управляет возможностью перетаскивания изображения (атрибут draggable).
eagerboolean | undefined—Принудительно рендерит содержимое компонента при его использовании. Это полезно, если у вас есть контент, который не отображается в DOM, но который необходимо проиндексировать для SEO.
gradientstring | undefined—CSS-градиент, накладываемый поверх изображения. Например 'to top, rgba(0,0,0,.4), transparent'.
heightstring | number | undefined—Высота компонента
imageClassany—CSS-класс, применяемый к внутреннему элементу <img>.
inlineboolean | undefined—Отображает компонент как inline-блок (inline-flex) вместо блочного.
lazySrcstring | undefined—Источник изображения-заглушки низкого качества, показываемого до загрузки основного.
maxHeightstring | number | undefined—Максимальная высота компонента
maxWidthstring | number | undefined—Максимальная ширина компонента
minHeightstring | number | undefined—Минимальная высота компонента
minWidthstring | number | undefined—Минимальная ширина компонента
optionsIntersectionObserverInit | undefined{}Опции IntersectionObserver для ленивой загрузки.
positionstring | undefined—Значение object-position для позиционирования изображения внутри контейнера.
referrerpolicy"origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined—Значение атрибута referrerpolicy.
reverseTransitionstring | boolean | undefined—Переход при показе слайда в обратном направлении. Имя transition-компонента или false, чтобы отключить анимацию
selectedClassstring | undefined—CSS класс для выбранного состояния
sizesstring | undefined—Значение атрибута sizes для адаптивных изображений.
srcstring | CdsImageSrcObject | undefined''Источник изображения. Строка или объект с src/srcset/lazySrc/aspect.
srcsetstring | undefined—Набор источников изображения для разных разрешений (атрибут srcset).
themestring | undefined—Тема компонента
transitionstring | boolean | undefined—Переход при показе слайда в прямом направлении. Имя transition-компонента или false, чтобы отключить анимацию
valueany—Значение компонента в группе
widthstring | number | undefined—Ширина компонента

Слоты

ИмяТипОписание
defaultanyКонтент, отображаемый поверх изображения.
erroranyСодержимое, отображаемое при ошибке загрузки изображения.
placeholderanyСодержимое, отображаемое во время загрузки изображения.
sourcesanyДополнительные элементы <source> для тега <picture>.