Задержка движения кадра при onMouseLeave

Я пытаюсь создать эффект наведения, используя onMouseEnter и onMouseLeave. У меня есть родительский div, когда onMouseEnter срабатывает в div, два дочерних div будут переводить X с -100 на 0, на дочернем div есть задержка 0,4 с. Посмотреть песочницу можно здесь: https://codesandbox.io/p/devbox/g7g8cr?migrateFrom=zwdwr9,

Когда onMouseLeave первый дочерний элемент быстро перемещается влево перед вторым дочерним элементом.

Мне нужно, чтобы onMouseLeave первый элемент div переместился влево после того, как второй полностью переместился влево.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете изменить задержку дочернего элемента div в зависимости от состояния наведения следующим образом:

const STAGGER_DELAY = 0.4;

...

<motion.div
  initial = {{
    x: -130,
  }}
  animate = {isHover ? { x: 130 } : {}}
  transition = {{ duration: 0.5, delay: isHover ? 0 : STAGGER_DELAY }}
  className = "size-20 bg-green-500 absolute top-10 left-10"
></motion.div>

<motion.div
  initial = {{
    x: -150,
  }}
  animate = {isHover ? { x: 0 } : {}}
  transition = {{ duration: 0.5, delay: isHover ? STAGGER_DELAY : 0 }}
  className = "size-20 bg-yellow-500 absolute top-10 left-10"
></motion.div>

Я создал этот рабочий пример. В моем примере есть два компонента: <Basic /> и <Advanced />. Я создал компонент Advanced, чтобы продемонстрировать, как можно воспользоваться преимуществами ступенчатого перехода Framer Motion и не беспокоиться об оркестровке дочерних элементов div. Это значительно упрощает добавление дополнительных дочерних элементов div, если вы хотите.

Другие вопросы по теме