Компонент Carousel предназначен для создания слайд-шоу, позволяя прокручивать контент по горизонтали или вертикали с плавными анимациями. В Element Plus он обладает высокой настраиваемостью и поддерживает автопрокрутку, индикаторы и навигационные стрелки.
Для использования Carousel необходимо импортировать компонент и его дочерний компонент CarouselItem:
import { ElCarousel, ElCarouselItem } from 'element-plus';
Структура базового слайдера выглядит так:
<el-carousel :interval="5000" arrow="always">
<el-carousel-item v-for="(item, index) in images" :key="index">
<img :src="item" alt="slide" />
</el-carousel-item>
</el-carousel>
interval — интервал автопрокрутки в миллисекундах.arrow — отображение стрелок навигации
(always, hover, never).v-for позволяет динамически создавать слайды из массива
данных.Element Plus Carousel поддерживает следующие ключевые свойства:
height — задаёт высоту карусели. Можно использовать как
строку с единицами измерения ('400px') или число
(400).trigger — способ активации смены слайдов при наведении
(click или hover).autoplay — логическое значение, включающее
автопрокрутку.loop — включение бесконечной прокрутки слайдов.initial-index — индекс активного слайда при
инициализации.direction — направление слайдов:
'horizontal' или 'vertical'.Пример с вертикальной каруселью и автопрокруткой:
<el-carousel direction="vertical" :autoplay="true" height="300px">
<el-carousel-item v-for="(item, index) in messages" :key="index">
{{ item }}
</el-carousel-item>
</el-carousel>
Carousel предоставляет несколько событий для интеграции с логикой приложения:
change — вызывается при смене активного слайда.mouseenter и mouseleave — позволяют
управлять поведением при наведении курсора.Пример использования события change:
<el-carousel @change="handleChange">
<el-carousel-item v-for="(item, i) in images" :key="i">
<img :src="item" />
</el-carousel-item>
</el-carousel>
<script>
export default {
methods: {
handleChange(index) {
console.log('Текущий слайд:', index);
}
}
}
</script>
Индикаторы показывают пользователю текущий активный слайд и позволяют перемещаться между слайдами. Их можно настроить через:
indicator-position — положение индикаторов
('outside', 'none' по умолчанию
'inside').indicator — слот для кастомного отображения
индикаторов.Пример кастомного индикатора:
<el-carousel :indicator-position="'outside'">
<template #indicator="{ currentIndex }">
<div class="custom-indicator">
{{ currentIndex + 1 }} / {{ images.length }}
</div>
</template>
<el-carousel-item v-for="(img, i) in images" :key="i">
<img :src="img" />
</el-carousel-item>
</el-carousel>
type — задаёт тип анимации: 'slide' (по
умолчанию) или 'card'.loop — бесконечная прокрутка.duration — продолжительность анимации смены слайда в
миллисекундах.Пример карусели с анимацией типа card:
<el-carousel type="card" :autoplay="true" :interval="4000">
<el-carousel-item v-for="(item, i) in cards" :key="i">
<div class="card-content">{{ item.title }}</div>
</el-carousel-item>
</el-carousel>
Компонент Carousel предоставляет методы для программного управления слайдами:
setActiveItem(index) — переключение на конкретный
слайд.prev() и next() — переход к предыдущему
или следующему слайду.Пример использования методов через ref:
<el-carousel ref="carouselRef">
<el-carousel-item v-for="(item, i) in images" :key="i">
<img :src="item" />
</el-carousel-item>
</el-carousel>
<script>
export default {
methods: {
goNext() {
this.$refs.carouselRef.next();
}
}
}
</script>
height..el-carousel .el-carousel-item img {
width: 100%;
border-radius: 8px;
object-fit: cover;
}
Carousel легко интегрируется с массивами объектов, полученных из API. Каждый слайд может содержать любую разметку: изображения, карточки, текстовые блоки, видео.
<el-carousel :autoplay="true">
<el-carousel-item v-for="banner in banners" :key="banner.id">
<div class="banner-slide">
<h3>{{ banner.title }}</h3>
<img :src="banner.image" />
</div>
</el-carousel-item>
</el-carousel>
Carousel можно комбинировать с ElButton, ElCard и другими компонентами Element Plus, создавая интерактивные слайдеры для галерей, промо-блоков и контентных каруселей.
<el-carousel :autoplay="false">
<el-carousel-item v-for="product in products" :key="product.id">
<el-card>
<img :src="product.image" />
<h4>{{ product.name }}</h4>
<el-button type="primary">Купить</el-button>
</el-card>
</el-carousel-item>
</el-carousel>
Эта гибкость делает Carousel универсальным инструментом для создания визуально привлекательных и интерактивных интерфейсов в приложениях на Vue.js с использованием Element Plus.