React Lottie Player — популярная библиотека, которая позволяет разработчикам легко интегрировать красивые анимации в свои приложения React. В этой статье мы рассмотрим некоторые креативные методы запуска анимации Lottie специально при наведении курсора мыши. Итак, пристегнитесь и будьте готовы добавить интерактивного волшебства в свои веб-проекты!
Метод 1: CSS-эффекты при наведении
Один простой способ вызвать анимацию Лотти при наведении — использовать CSS. Вы можете применить эффект наведения к элементу, и при наведении на этот элемент вы сможете воспроизвести анимацию Лотти. Вот пример того, как этого можно добиться:
import React, { useState } from 'react';
import Lottie from 'react-lottie';
import animationData from './animation.json';
const AnimatedOnHover = () => {
  const [isHovered, setIsHovered] = useState(false);
  const handleHover = () => {
    setIsHovered(true);
  };
  const handleMouseLeave = () => {
    setIsHovered(false);
  };
  return (
    <div
      onMouseEnter={handleHover}
      onMouseLeave={handleMouseLeave}
    >
      <Lottie
        options={{
          animationData,
          autoplay: isHovered,
        }}
      />
    </div>
  );
};
export default AnimatedOnHover;
Метод 2: оболочка компонента React
Другой подход заключается в создании пользовательского компонента-оболочки, который инкапсулирует как анимацию Lottie, так и функциональность наведения. Таким образом, вы можете повторно использовать компонент во всем приложении. Вот пример:
import React, { useState } from 'react';
import Lottie from 'react-lottie';
import animationData from './animation.json';
const LottieOnHover = ({ animation }) => {
  const [isHovered, setIsHovered] = useState(false);
  const handleHover = () => {
    setIsHovered(true);
  };
  const handleMouseLeave = () => {
    setIsHovered(false);
  };
  return (
    <div
      onMouseEnter={handleHover}
      onMouseLeave={handleMouseLeave}
    >
      <Lottie
        options={{
          animationData: animation || animationData,
          autoplay: isHovered,
        }}
      />
    </div>
  );
};
export default LottieOnHover;
Метод 3: использование React-Tooltip
Если вы хотите запускать анимацию Лотти при наведении курсора на всплывающую подсказку или значок информации, вы можете использовать библиотеку React-Tooltip. Вот пример:
import React from 'react';
import Lottie from 'react-lottie';
import animationData from './animation.json';
import ReactTooltip from 'react-tooltip';
const LottieWithTooltip = () => {
  return (
    <div>
      <span data-tip data-for="lottie-tooltip">
        <i className="fa fa-info-circle"></i>
      </span>
      <ReactTooltip id="lottie-tooltip">
        <Lottie
          options={{
            animationData,
            autoplay: true,
          }}
        />
      </ReactTooltip>
    </div>
  );
};
export default LottieWithTooltip;
Метод 4: использование CSS-переходов
CSS-переходы можно комбинировать с React Lottie Player для создания плавной анимации при наведении. Анимируя непрозрачность или масштаб компонента Lottie, вы можете добиться визуально привлекательных эффектов. Вот пример:
import React from 'react';
import Lottie from 'react-lottie';
import animationData from './animation.json';
import './styles.css';
const LottieWithTransitions = () => {
  return (
    <div className="lottie-container">
      <Lottie
        options={{
          animationData,
          autoplay: false,
        }}
      />
    </div>
  );
};
export default LottieWithTransitions;
Метод 5: использование React Spring
React Spring — это мощная библиотека анимации, которую можно комбинировать с React Lottie Player для создания расширенных эффектов при наведении. Вот пример того, как этого можно добиться:
import React, { useState } from 'react';
import { useSpring, animated } from 'react-spring';
import Lottie from 'react-lottie';
import animationData from './animation.json';
const LottieWithReactSpring = () => {
  const [isHovered, setIsHovered] = useState(false);
  const springProps = useSpring({
    transform: isHovered ? 'scale(1.2)' : 'scale(1)',
  });
  const handleHover = () => {
    setIsHovered(true);
  };
  const handleMouseLeave = () => {
    setIsHovered(false);
  };
  return (
    <animated.div
      onMouseEnter={handleHover}
      onMouseLeave={handleMouseLeave}
      style={springProps}
    >
      <Lottie
        options={{
          animationData,
          autoplay: false,
        }}
      />
</animated.div>
  );
};
export default LottieWithReactSpring;
В этой статье мы рассмотрели пять различных методов реализации React Lottie Player при наведении курсора мыши. От простых CSS-эффектов при наведении курсора мыши до продвинутых анимаций с помощью React Spring — теперь у вас есть целый ряд возможностей для добавления интерактивных и увлекательных анимаций Lottie в ваши проекты React. Поэкспериментируйте с этими методами и воплотите в жизнь свои веб-приложения!