- Главная
- Проекты на Vue
- Аккордеон на Vue
Аккордеон на Vue
Создание интерактивных интерфейсов, таких как аккордеоны, часто связано с управлением состоянием элементов, обработкой событий и динамическим изменением стилей. На чистом JavaScript это требует немало строк кода. Фреймворк Vue.js кардинально упрощает эту задачу, позволяя разработчику сосредоточиться на логике и дизайне, а не на рутинных манипуляциях с DOM. Благодаря реактивной системе данных и декларативному синтаксису, компонент аккордеона создается быстро, выглядит чисто и легко поддерживается.
Ниже вы можете увидеть и протестировать готовый компонент аккордеона, написанный на Composition API Vue 3. Он демонстрирует классический паттерн: клик по кнопке разворачивает либо сворачивает один пункт. А теперь — посмотрите, как это работает!
Софизмы
{{item.question}}
{{item.answer}}
Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.
Разбор реализации: как работает этот Vue-аккордеон
Давайте подробно разберем ключевые моменты кода, чтобы понять мощь и простоту Vue.
HTML (Шаблон)
- Реактивные данные
items: Вся структура аккордеона построена на реактивном массивеitems, который содержит объекты с вопросами, ответами и ключевым свойствомisExpanded. Изменение этого свойства автоматически приводит к обновлению интерфейса. - Декларативный рендеринг
v-for: Директиваv-for="item in items"генерирует HTML-структуру для каждого элемента массива. Это избавляет от ручного создания элементов в DOM.
Динамические классы и условия :class, v-show, v-if/v-else:
:class="{expanded: item.isExpanded}"добавляет класс .expanded контейнеру пункта, если он открыт, позволяя применять специфичные стили (например, фон).v-show="item.isExpanded"управляет видимостью ответа и декоративной SVG-иконки. Это директива, которая просто переключаетdisplay: none.v-ifиv-elseна кнопке полностью меняют SVG-иконку с «плюса» на «крестик» в зависимости от состояния, обеспечивая наглядную обратную связь.
Обработка событий @click: Вся логика открытия/закрытия заключена в одну лаконичную строку: @click="item.isExpanded = !item.isExpanded". Vue самостоятельно отслеживает это изменение и перерисовывает только нужные части компонента.
CSS (Стили)
В стилях используются современные подходы: CSS-переменные --w, --tr для удобства, flexbox для выравнивания. Стили изолированы для данного компонента, что предотвращает конфликты.
Итог: Весь функционал аккордеона реализован в минимальном количестве строк кода. Vue берет на себя всю сложную работу по синхронизации данных и интерфейса.
Нужен уникальный и эффективный интерактив для вашего сайта?
Этот аккордеон — лишь маленький пример того, как современные технологии могут оживить ваш контент, улучшить пользовательский опыт и выделить сайт на фоне конкурентов.
Наша веб-студия специализируется на создании креативных, интерактивных сайтов и компонентов. От сложных анимированных интерфейсов на чистом JS и Vue.js до кастомных виджетов и динамических форм — мы воплотим в жизнь любую вашу идею.
Готовы сделать ваш сайт по-настоящему интерактивным? Свяжитесь с нами для обсуждения проекта!