DevGang
Авторизоваться

Движущийся интерфейс в React

Motion UI относится к использованию анимации, переходов и визуальных эффектов для добавления движения и динамизма в пользовательские интерфейсы. Он включает в себя анимацию различных элементов, таких как кнопки, меню, карточки и переходы между страницами, чтобы создать интерактивный и привлекательный опыт для пользователей.

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

Планирование пользовательского интерфейса Motion для вашего приложения React

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

Определите правильные варианты использования:

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

Понимание ожиданий пользователей и требований к приложениям:

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

Установите четкие цели:

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

Выбор правильной библиотеки анимации

Две самые популярные библиотеки анимации для React включают React Spring [26,1 тыс.+ звезд GitHub] и Framer Motion [19,6 тыс.+ звезд GitHub], но есть из чего выбрать. У Арафата Ислама есть большой список анимационных библиотек.

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

Framer Motion предоставляет гибкий и интуитивно понятный API для создания различных анимаций и переходов. Он популярен благодаря простоте использования и поддержке визуального редактора. Framer Motion позволяет разработчикам создавать анимацию с использованием ключевых кадров, жестов и т. д., что делает его универсальным вариантом для различных анимаций. Ссылка на документацию.

Общие случаи использования и соображения

Используя Framer motion, давайте продемонстрируем пару примеров:

А. Создание плавных переходов

  • Использование функций замедления для достижения естественного движения
  • Избегание резких или прерывистых анимаций
  • Реализация поэтапной анимации для полированного вида

Демонстрация: полоса прокрутки прогресса

  const { scrollYProgress } = useScroll();

  return (
    <>
      {/** The core of Motion is the motion component. Think of it as a plain HTML or SVG element, supercharged with animation capabilities. */}
      <motion.div
        className="progress-bar"
        style={{ scaleX: scrollYProgress }}
      />
      <div>
        <h1>Demo time!</h1>
      </div>
    </>
  );
};
export default Scroll;

B. Улучшение взаимодействия с пользователем

  • Анимация элементов пользовательского интерфейса во время взаимодействия
  • Добавление визуальной обратной связи для лучшего понимания пользователем
  • Реализация анимации и жестов перетаскивания

Демонстрация: Отзывчивый аккордеон

import React, { useState } from "react";
import { motion, AnimatePresence, LayoutGroup } from "framer-motion";
import Scroll from "../src/Scroll";

function Item({ color, isOpen, onClick }) {
  return (
    <motion.li animate onClick={onClick} style={{ "--choiceColor": color }}>
      <motion.div animate className="image" />
      {/** AnimatePresence allows components to animate out when they're removed from the React tree. AnimatePresence works by detecting when direct children are removed from the React tree. Any motion components contained by the removed child that have an exit prop will fire that animation before the entire tree is finally removed from the DOM.*/}
      <AnimatePresence>{isOpen && <Content />}</AnimatePresence>
    </motion.li>
  );
}

function Content() {
  return (
    <motion.div animate className="content">
    {/** The core of Motion is the motion component. Think of it as a plain HTML or SVG element, supercharged with animation capabilities. */}
      <motion.span
        initial={{ opacity: 0 }}
        animate={{ opacity: 1 }}
        exit={{ opacity: 0 }}
        />
        {/** initial, animate, and exit properties set start, animation, and end animation state */}
      <motion.span
        initial={{ opacity: 0 }}
        animate={{ opacity: 1 }}
        exit={{ opacity: 0 }}
        />
      <motion.span
        initial={{ opacity: 0 }}
        animate={{ opacity: 1 }}
        exit={{ opacity: 0 }}
        />
    </motion.div>
  );
}

export default function App() {
  const [currentColor, setColor] = useState(false);

  return (
    <div>
    {/** LayoutGroup is a Group of motion components that should perform layout animations together.e */}
      <LayoutGroup>
        <Scroll />
        <motion.ul animate>
          {colors.map((color) => (
            <Item
              key={color}
              color={color}
              isOpen={currentColor === color}
              onClick={() => setColor(currentColor === color ? false : color)}
            />
          ))}
        </motion.ul>
      </LayoutGroup>
    </div>
  );
}

const colors = ["#0099ff", "#ff0055", "#000"];

C. Отзывчивый моушн-дизайн

  • Разработка анимации для различных размеров экрана и устройств
  • Использование медиа-запросов для настройки поведения анимации
  • Тестирование анимации на разных устройствах и в разных браузерах

Отладка и тестирование Motion UI

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

Время анимации и задержки:

Проверьте правильность синхронизации и задержек анимации. Убедитесь, что анимация начинается и заканчивается в нужное время, а задержки одинаковы. Время анимации должно быть согласованным и соответствовать единообразию фирменного стиля, поскольку все анимированные элементы должны иметь одинаковые временные рамки, а также внешний вид.

Производительность и оптимизация:

Оцените производительность анимации. Измеряйте и анализируйте их влияние на отрисовку и общую производительность приложения.

Тестирование доступности и соображения

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

Ниже приведены некоторые ресурсы, которые могут оказаться полезными:

Я надеюсь, что эта статья была полезной.

Источник:

#React
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу