QCarousel — это компонент библиотеки
Quasar, предназначенный для создания интерактивных
слайдеров и каруселей в веб-приложениях на Vue.js. Он
предоставляет широкие возможности кастомизации, управление переходами
между слайдами и интеграцию с другими элементами интерфейса.
Базовая структура QCarousel выглядит следующим
образом:
<q-carousel
v-model="slide"
animated
swipeable
control-type="flat"
navigation
>
<q-carousel-slide
v-for="(slide, index) in slides"
:key="index"
:name="slide.name"
:img-src="slide.img"
:caption="slide.caption"
/>
</q-carousel>
flat, flat-rounded,
dots, slider).Каждый слайд создается с помощью компонента
QCarouselSlide, который поддерживает следующие ключевые
параметры:
Пример использования индивидуальной анимации:
<q-carousel-slide
name="slide1"
img-src="slide1.jpg"
transition-next="jump-down"
transition-prev="jump-up"
/>
QCarousel поддерживает программное управление слайдами.
Для этого используется v-model или методы
$refs:
<q-carousel ref="carousel" v-model="currentSlide">
<q-carousel-slide name="1" img-src="1.jpg" />
<q-carousel-slide name="2" img-src="2.jpg" />
</q-carousel>
</q-carousel>
<script>
export default {
data() {
return {
currentSlide: '1'
}
},
methods: {
nextSlide() {
this.$refs.carousel.next()
},
prevSlide() {
this.$refs.carousel.prev()
},
goToSlide(name) {
this.currentSlide = name
}
}
}
</script>
Методы next(), prev() и
goToSlide(name) позволяют переключать слайды программно,
что полезно для интеграции с кнопками управления или внешними
событиями.
Карусель позволяет выводить точечные индикаторы,
слайдер или кнопки навигации. Параметр
control-type задает тип индикаторов:
flat — плоские кнопки.dots — точечные индикаторы.slider — визуальный слайдер внизу карусели.Индикаторы можно полностью кастомизировать через слот
control:
<q-carousel v-model="slide">
<template v-slot:control="{ goToSlide, slides, currentSlide }">
<div class="custom-controls">
<button
v-for="s in slides"
:key="s.name"
:class="{ active: s.name === currentSlide }"
@click="goToSlide(s.name)"
>{{ s.name }}</button>
</div>
</template>
</q-carousel>
Слайдеры можно настроить на автоперелистывание через
autoplay и interval:
<q-carousel
v-model="slide"
animated
autoplay
interval="5000"
>
<q-carousel-slide name="1" img-src="slide1.jpg" />
<q-carousel-slide name="2" img-src="slide2.jpg" />
</q-carousel>
Комбинация этих параметров с жестами и анимацией позволяет создавать динамичные и интерактивные интерфейсы.
Каждый слайд можно кастомизировать с помощью слотов:
Пример сложного слайда с кастомным контентом:
<q-carousel-slide name="custom" color="primary">
<template v-slot:header>
<h3 class="text-white">Заголовок слайда</h3>
</template>
<template v-slot:default>
<img src="custom.jpg" alt="Custom Slide" />
<p class="text-white">Описание слайда с дополнительной информацией.</p>
</template>
<template v-slot:footer>
<q-btn flat label="Подробнее" color="white" />
</template>
</q-carousel-slide>
QCarousel легко интегрируется с QBtn,
QToolbar, QLayout,
QDialog для создания интерактивных галерей и
презентаций. Использование слотов и методов карусели позволяет
синхронизировать слайды с внешними событиями и навигацией.
Ключевые события, на которые можно подписаться:
Пример:
<q-carousel
v-model="slide"
@input="onSlideChange"
@next="onNextSlide"
>
</q-carousel>
<script>
methods: {
onSlideChange(newSlide) {
console.log('Сменился слайд на', newSlide)
},
onNextSlide() {
console.log('Перешли к следующему слайду')
}
}
</script>
Для большого количества слайдов рекомендуется использовать:
img-src
с динамическим импортом.QCarousel обеспечивает:
Эти возможности делают его универсальным инструментом для создания слайдеров, галерей и интерактивных презентаций в современных веб-приложениях.