- Главная
- Проекты на Vue
- Слайдер на Vue
Слайдер на Vue
Фреймворк Vue.js открыл новые возможности для создания интерактивных элементов, которые мгновенно реагируют на действия пользователя. Слайдер — один из ключевых элементов современного веб-сайта, и его реализация с помощью Vue становится невероятно простой. Реактивная система Vue позволяет управлять состоянием компонентов (например, активным слайдом) без необходимости прямого манипулирования DOM, что делает код чистым, логичным и легко поддерживаемым.
Убедитесь в этом сами: ниже представлен готовый интерактивный слайдер изображений, созданный на Vue 3. Кликните на любое фото, чтобы увидеть анимацию.
Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.
Как работает этот Vue слайдер?
Давайте разберем код, чтобы понять, как легко и элегантно можно создать слайдер на Vue.
HTML (Шаблон компонента)
В шаблоне мы используем директиву v-for для отрисовки списка изображений из массива photos. Ключевые моменты:
:class="{expanded: photo.isExpanded}"– Динамически добавляет CSS-классexpandedтолько к активному (раскрытому) слайду. Это сердце нашей анимации.@click="handleClick(index)"– Обрабатывает клик пользователя по слайду, передавая его индекс в метод.{{ photo.desc }}– Реактивно отображает подпись к изображению, которая берется из нашего массива данных.
CSS (Стилизация)
Стили обеспечивают плавные переходы и внешний вид:
- Контейнер
.sliderиспользуетdisplay: flex, чтобы слайды располагались в ряд. - Изначально все слайды имеют одинаковый
flex-grow(благодаряflex: 1 1). - Класс
.expandedрезко увеличиваетflex-growактивного слайда, заставляя его растягиваться, а остальные – сжиматься. - Класс
.slider__descскрыт (opacity: 0) и появляется только у активного слайда. Плавность анимации обеспечиваетtransition: var(--tr).
JS (Логика на Vue 3 Composition API)
Логика компонента проста и сосредоточена в одном месте:
- Состояние: Мы используем реактивную ссылку
const photos = ref(PHOTOS), которая хранит массив всех слайдов с их свойствами, включая флагisExpanded. - Метод handleClick: При клике на слайд этот метод обходит весь массив
photosи устанавливаетisExpanded: trueтолько для выбранного слайда (по индексу), а для всех остальных –isExpanded: false. - Реактивность Vue: Как только значение
isExpandedменяется, Vue автоматически реагирует на это изменение и перерисовывает DOM, применяя или убирая CSS-классы. Это приводит к плавной анимации расширения/сжатия слайдов без необходимости писать какой-либо дополнительный код для манипуляций со стилями.
Этот пример наглядно демонстрирует мощь Vue для создания слайдеров и других интерактивных элементов при разработке сайтов: вы управляете данными, а фреймворк заботится об обновлении интерфейса.
Данный слайдер — лишь один из примеров того, как современные технологии могут оживить ваш сайт. Хотите реализовать на своем проекте нестандартные галереи, интерактивные элементы или сложные анимации? Наша команда разработчиков с глубоким знанием Vue готова создать для вас уникальное и эффективное решение. Закажите разработку компонентов под ключ — и ваш сайт заиграет по-новому!