当前位置:首页 > React

动画实现react图标

2026-01-26 19:11:01React

使用CSS动画实现React图标旋转

安装React Icons库(如未安装):

npm install react-icons

引入所需图标和CSS模块:

import { FaReact } from 'react-icons/fa';
import styles from './ReactIcon.module.css';

定义CSS动画:

/* ReactIcon.module.css */
.spin {
  animation: spin 2s linear infinite;
}

@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

组件实现:

function AnimatedReactIcon() {
  return <FaReact className={styles.spin} size={48} color="#61DAFB" />;
}

使用Framer Motion实现高级动画

安装Framer Motion:

npm install framer-motion

实现弹性缩放动画:

import { motion } from "framer-motion";

function BouncingReactIcon() {
  return (
    <motion.div
      animate={{
        scale: [1, 1.2, 1],
        rotate: [0, 180, 360],
      }}
      transition={{
        duration: 2,
        repeat: Infinity,
        ease: "easeInOut"
      }}
    >
      <FaReact size={64} color="#61DAFB" />
    </motion.div>
  );
}

使用GSAP实现路径动画

安装GSAP:

npm install gsap

创建路径追踪动画:

import { useRef, useEffect } from 'react';
import { gsap } from 'gsap';

function PathAnimatedIcon() {
  const iconRef = useRef(null);

  useEffect(() => {
    gsap.to(iconRef.current, {
      rotation: 360,
      duration: 3,
      repeat: -1,
      ease: "power1.out",
      transformOrigin: "center"
    });
  }, []);

  return <FaReact ref={iconRef} size={72} color="#61DAFB" />;
}

SVG路径动画实现

自定义SVG动画组件:

function SvgReactIcon() {
  return (
    <svg
      width="100"
      height="100"
      viewBox="0 0 100 100"
      className={styles.pulse}
    >
      <circle cx="50" cy="50" r="20" fill="#61DAFB" />
      <g fill="none" stroke="#61DAFB" strokeWidth="2">
        <ellipse cx="50" cy="50" rx="35" ry="20" />
        <ellipse cx="50" cy="50" rx="35" ry="20" transform="rotate(60 50 50)" />
        <ellipse cx="50" cy="50" rx="35" ry="20" transform="rotate(120 50 50)" />
      </g>
    </svg>
  );
}

配套CSS:

动画实现react图标

.pulse {
  animation: pulse 1.5s ease-in-out infinite alternate;
}

@keyframes pulse {
  from {
    transform: scale(0.9);
    opacity: 0.8;
  }
  to {
    transform: scale(1.1);
    opacity: 1;
  }
}

标签: 图标动画
分享给朋友:

相关文章

vue实现加载动画

vue实现加载动画

Vue 实现加载动画的方法 在 Vue 中实现加载动画可以通过多种方式完成,以下是一些常见的方法: 使用 CSS 动画 通过 CSS 定义动画效果,结合 Vue 的动态类绑定实现加载动画。以下是一个…

vue实现ppt动画

vue实现ppt动画

Vue实现PPT动画的基本思路 使用Vue实现PPT动画效果,可以通过动态绑定CSS类、结合过渡动画和第三方库来实现。Vue的响应式特性非常适合处理动态内容切换和动画效果。 使用Vue过渡动画实现单…

vue使用animate实现动画

vue使用animate实现动画

使用 Animate.css 在 Vue 中实现动画 在 Vue 项目中集成 Animate.css 可以为元素添加丰富的 CSS 动画效果。Animate.css 是一个预定义的 CSS 动画库,无…

vue怎么实现图标转动

vue怎么实现图标转动

实现图标转动的几种方法 在Vue中实现图标转动可以通过CSS动画或JavaScript动态控制样式。以下是几种常见的方法: 使用CSS动画 通过定义CSS的@keyframes和animation属…

vue实现切换路由动画

vue实现切换路由动画

路由动画的基本实现 在Vue中实现路由切换动画,通常结合<transition>或<transition-group>组件与Vue Router完成。以下是基础实现方式: &…

vue怎么点击实现动画

vue怎么点击实现动画

在Vue中实现点击动画的方法 使用Vue过渡和动画系统 Vue提供了内置的过渡和动画系统,可以通过<transition>和<transition-group>组件实现。在元素…