- Главная
- Проекты на Vue
- Вращающаяся навигация
Вращающаяся навигация
Создание динамичных и запоминающихся интерфейсов — ключ к удержанию внимания пользователя. Одним из таких эффектов является вращающася навигация, которая буквально «поворачивает» основную страницу, открывая пространство для меню.
Реализовать такой непростой эффект с чистым JavaScript может быть трудоемко. Однако с фреймворком Vue.js эта задача становится невероятно простой. Реактивная природа Vue позволяет легко управлять переходами и состояниями, связывая клик по кнопке с плавной трансформацией всей сцены.
Почему именно Vue для таких компонентов?
Реактивность: Изменение одного состояния автоматически применяет нужные CSS-классы и анимации ко всем связанным элементам.
Простота: Логика открытия/закрытия инкапсулирована в компоненте, что делает код чистым и поддерживаемым.
Производительность: Vue эффективно обновляет DOM, обеспечивая плавность анимаций.
Этот пример — прямое доказательство того, что Vue.js идеально подходит для создания сложных интерактивных интерфейсов, таких как вращающееся меню, превращая рутину в творческий и результативный процесс.
Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.
Как работает это Vue-меню с вращающейся анимацией?
Давайте разберем код, чтобы понять, как элегантно создается интерактивное меню с вращающейся анимацией на Vue.
HTML (Шаблон компонента)
В шаблоне мы используем несколько ключевых Vue-директив для создания интерактивности:
:class="{'app-page--rotated': isShown}"– Динамически добавляет CSS-классapp-page--rotatedтолько когда меню открыто. Это запускает анимацию поворота всей страницы.:class="{'app-burger--rotated': isShown}"– Аналогично поворачивает круглую кнопку-бургер на -90 градусов при открытии меню.@click.prevent="showMenu"и@click.prevent="hideMenu"– Обрабатывают клики пользователя по кнопкам бургера и закрытия, предотвращая стандартное поведение браузера.v-for="item in menu"– Динамически отрисовывает пункты меню из массиваmenu, создавая навигационные ссылки.:class="{move: isShown}"– Добавляет классmoveк пунктам меню когда они должны выезжать из-за края экрана.
CSS (Стилизация и анимация)
Стили обеспечивают плавные переходы и визуальные эффекты:
- Контейнеры используют
transform-originдля задания точки вращения иtransition: transform var(--tr)для плавной анимации. - Класс
.app-page--rotatedприменяетtransform: rotate(-20deg), заставляя основную страницу «отъезжать» вправо. - Класс
.app-burger--rotatedповорачивает красный круг с кнопками на -90 градусов, сохраняя ориентацию иконок. - Класс
.moveубираетtransform: translateX(-200px), позволяя пунктам меню плавно выезжать из-за левого края с задержкойtransition-delay: 0.25sдля эффекта последовательного появления.
JS (Логика на Vue 3 Composition API)
Логика компонента проста и сосредоточена в одном месте:
- Состояние: Мы используем реактивную ссылку
let isShown = ref(false), которая отслеживает открыто ли меню, иconst menu = ref(MENU), содержащую массив пунктов навигации. - Метод
showMenu: При клике на бургер-кнопку устанавливаетisShown.value = true, что активирует все связанные CSS-классы. - Метод
hideMenu: При клике на крестик устанавливаетisShown.value = false, возвращая интерфейс в исходное состояние. - Реактивность Vue: Как только значение
isShownменяется, Vue автоматически реагирует на это изменение и перерисовывает DOM, применяя или убирая CSS-классы. Это приводит к синхронизированной анимации поворота страницы, вращения кнопки и выезда меню без необходимости писать дополнительный код для управления стилями.
Вдохновились этой анимацией? ✨
Такие же креативные и динамичные элементы могут оживить и ваш сайт! Мы создаем сайты и уникальные интерактивные компоненты, которые:
- Привлекают внимание посетителей
- Подчеркивают современность вашего бренда
- Запоминаются надолго
Готовы выделиться? 🚀
Закажите собственный креативный компонент — мы превратим вашу идею во впечатляющий цифровой опыт!