Волновой эффект для текста

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

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

Посмотрите на эффект в действии прямо сейчас — кликните на поля ввода ниже:

Вход в аккаунт

Нет аккаунта? Регистрация

Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.

Как работает этот волновой эффект?

Ниже представлен код, который приводит в действие эту анимацию. Давайте разберем его основные части, чтобы понять логику работы.

HTML-структура

Основана на компоненте Vue. Форма содержит цикл v-for, который динамически создает поля ввода на основе массива inputs. Каждый label обертывает свой текст в отдельные span для каждой буквы — это ключ к поэтапной анимации.

CSS-стили

Отвечают за внешний вид и саму анимацию.

  1. Буквы внутри label изначально сдвинуты вниз на 30 пикселей transform: translateY(30px).
  2. Класс .move возвращает их в исходное положение transform: translateY(0).
  3. Магия «волны» создается с помощью динамически рассчитанной transition-delay для каждого span. Задержка вычисляется как index * 50ms, что заставляет каждую следующую букву анимироваться с небольшим опозданием.

Логика на Vue.js (JavaScript)

Это «мозг» компонента.

  1. Состояние: Массив inputs содержит объекты для каждого поля, хранящие его имя, текст label, флаг активности focused и значение value.
  2. Обработчик клика handleClick: При клике в любую область формы этот метод определяет, было ли нажатие на поле ввода.
  3. Если клик был не по полю, все флаги focused сбрасываются в false, и подписи возвращаются в исходное состояние (если поле не заполнено).
  4. Если клик был по полю ввода, для соответствующего поля устанавливается focused: true, что добавляет класс move к спану букв его подписи, запуская волновую анимацию.

Использование Vue делает управление этими состояниями невероятно простым. Изменение данных в inputs автоматически обновляет DOM, активируя или деактивируя анимацию.

Хотите внедрить такие решения на своем сайте?

Этот волновой эффект — лишь один из примеров того, как креативный подход и современные технологии могут преобразить пользовательский интерфейс.

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

Свяжитесь с нами, чтобы обсудить ваш проект!