Вращающаяся навигация

Создание динамичных и запоминающихся интерфейсов — ключ к удержанию внимания пользователя. Одним из таких эффектов является вращающася навигация, которая буквально «поворачивает» основную страницу, открывая пространство для меню.

Реализовать такой непростой эффект с чистым 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-директив для создания интерактивности:

  1. :class="{'app-page--rotated': isShown}" – Динамически добавляет CSS-класс app-page--rotated только когда меню открыто. Это запускает анимацию поворота всей страницы.
  2. :class="{'app-burger--rotated': isShown}" – Аналогично поворачивает круглую кнопку-бургер на -90 градусов при открытии меню.
  3. @click.prevent="showMenu" и @click.prevent="hideMenu" – Обрабатывают клики пользователя по кнопкам бургера и закрытия, предотвращая стандартное поведение браузера.
  4. v-for="item in menu" – Динамически отрисовывает пункты меню из массива menu, создавая навигационные ссылки.
  5. :class="{move: isShown}" – Добавляет класс move к пунктам меню когда они должны выезжать из-за края экрана.

CSS (Стилизация и анимация)

Стили обеспечивают плавные переходы и визуальные эффекты:

  1. Контейнеры используют transform-origin для задания точки вращения и transition: transform var(--tr) для плавной анимации.
  2. Класс .app-page--rotated применяет transform: rotate(-20deg), заставляя основную страницу «отъезжать» вправо.
  3. Класс .app-burger--rotated поворачивает красный круг с кнопками на -90 градусов, сохраняя ориентацию иконок.
  4. Класс .move убирает transform: translateX(-200px), позволяя пунктам меню плавно выезжать из-за левого края с задержкой transition-delay: 0.25s для эффекта последовательного появления.

JS (Логика на Vue 3 Composition API)

Логика компонента проста и сосредоточена в одном месте:

  1. Состояние: Мы используем реактивную ссылку let isShown = ref(false), которая отслеживает открыто ли меню, и const menu = ref(MENU), содержащую массив пунктов навигации.
  2. Метод showMenu: При клике на бургер-кнопку устанавливает isShown.value = true, что активирует все связанные CSS-классы.
  3. Метод hideMenu: При клике на крестик устанавливает isShown.value = false, возвращая интерфейс в исходное состояние.
  4. Реактивность Vue: Как только значение isShown меняется, Vue автоматически реагирует на это изменение и перерисовывает DOM, применяя или убирая CSS-классы. Это приводит к синхронизированной анимации поворота страницы, вращения кнопки и выезда меню без необходимости писать дополнительный код для управления стилями.

Вдохновились этой анимацией? ✨

Такие же креативные и динамичные элементы могут оживить и ваш сайт! Мы создаем сайты и уникальные интерактивные компоненты, которые:

  • Привлекают внимание посетителей
  • Подчеркивают современность вашего бренда
  • Запоминаются надолго

Готовы выделиться? 🚀

Закажите собственный креативный компонент — мы превратим вашу идею во впечатляющий цифровой опыт!