- Главная
- Проекты на Vue
- Разделенный экран (split screen)
Разделенный экран (split screen)
Разделенные экраны (Split Screen) — трендовый элемент в современном веб-дизайне. Они позволяют эффектно представить два продукта, услуги или варианта выбора, вовлекая пользователя в интерактивное взаимодействие. Раньше создание такого динамичного компонента требовало немало кода, но с фреймворком Vue.js это становится невероятно простой задачей. Реактивность и декларативный подход Vue позволяют в несколько строк кода реализовать плавную анимацию и отклик на действия пользователя.
Ниже вы можете увидеть готовый компонент в работе. Наведите курсор на каждую из половин, чтобы увидеть анимацию.
Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.
Как это работает? Подробный разбор кода
Давайте разберем по частям, как создается эта магия.
Верстка и директивы Vue
v-for="item in items"— директива, которая автоматически рендерит необходимое количество блоков на основе массива данных. Это делает код масштабируемым: чтобы добавить третью секцию, достаточно просто добавить новый объект в массив items.:class="{expand: item.expand}"— динамически добавляет или убирает CSS-классexpandв зависимости от состоянияitem.expand. Это и есть сердцевина анимации.
Стилизация на CSS
- Контейнер
.app-container— это flex-контейнер, где дочерние элементы по умолчанию имеют равную ширинуflex: 1 1 0. - Анимация — плавное изменение свойства
flex-growв классе.expandзаставляет активную секцию растягиваться. Скорость и характер анимации задаются CSS-переменной--tr. - Адаптивность — для заголовка используется современная функция
clamp(), которая обеспечивает отзывчивый шрифт, плавно изменяющийся между минимальным и максимальным значениями. - Наложения — псевдоэлементы
::afterна изображениях создают полупрозраные цветные фильтры для улучшения читаемости текста.
Логика на Vue.js (Composition API)
- Реактивные данные: В
items.refхранится массив объектов с данными для каждой секции. Ключевое полеexpandотвечает за то, активна ли в данный момент секция. - Обработчик события: Функция
handleMouseEnterсрабатывает при наведении курсора на блок.app-item. Она находит заголовок внутри этого блока и сравнивает его текст с данными в массивеitems. Той секции, заголовок которой совпал, устанавливаетсяexpand: true, а всем остальным —false.
Готовы реализовать подобное на вашем сайте?
Этот компонент — лишь маленький пример того, как современные технологии могут оживить ваш сайт и улучшить пользовательский опыт.
Наша веб-студия готова разработать для вас:
- Уникальные интерактивные интерфейсы на Javascript и Vue.js.
- Адаптивные и быстрые сайты, которые понравятся и вашим клиентам, и поисковым системам.
- Любые аналогичные компоненты, идеально встроенные в дизайн и логику вашего проекта.
Свяжитесь с нами сегодня, и мы превратим ваши идеи в чистый и эффективный код!