当前位置:首页 > React

react实现出场动画

2026-01-27 12:06:55React

使用 CSS Transition 实现基础出场动画

在 React 中通过 CSS 的 transition 属性配合状态变化实现平滑过渡效果。定义一个 CSS 类包含过渡属性和初始样式,通过 React 的状态控制类名的切换。

.fade-enter {
  opacity: 0;
}
.fade-enter-active {
  opacity: 1;
  transition: opacity 500ms ease-in;
}
.fade-exit {
  opacity: 1;
}
.fade-exit-active {
  opacity: 0;
  transition: opacity 500ms ease-out;
}

在组件中使用 useState 控制显示状态,通过条件渲染触发动画:

import { useState } from 'react';
import './styles.css';

function FadeComponent() {
  const [show, setShow] = useState(true);

  return (
    <div>
      <button onClick={() => setShow(!show)}>
        Toggle
      </button>
      {show && (
        <div className="fade-enter-active">
          Content to animate
        </div>
      )}
    </div>
  );
}

使用 React Transition Group 库处理复杂动画

对于需要精细控制的动画序列,推荐使用 react-transition-group 库。该库提供 CSSTransition 组件自动管理类名生命周期,支持入场和出场动画的协调。

安装依赖:

npm install react-transition-group

实现示例:

import { CSSTransition } from 'react-transition-group';

function App() {
  const [inProp, setInProp] = useState(false);

  return (
    <div>
      <button onClick={() => setInProp(!inProp)}>
        Toggle
      </button>
      <CSSTransition
        in={inProp}
        timeout={300}
        classNames="fade"
        unmountOnExit
      >
        <div>Animated content</div>
      </CSSTransition>
    </div>
  );
}

对应的 CSS 需匹配 classNames 前缀:

.fade-enter {
  opacity: 0;
}
.fade-enter-active {
  opacity: 1;
  transition: opacity 300ms;
}
.fade-exit {
  opacity: 1;
}
.fade-exit-active {
  opacity: 0;
  transition: opacity 300ms;
}

使用 Framer Motion 实现高级动画

对于需要物理引擎或复杂路径的动画,framer-motion 提供声明式 API 和手势支持。定义 motion 组件并通过 animate 属性控制动画状态。

安装依赖:

npm install framer-motion

实现滑入滑出动画:

import { motion, AnimatePresence } from "framer-motion";

function SlideComponent() {
  const [isVisible, setIsVisible] = useState(true);

  return (
    <div>
      <button onClick={() => setIsVisible(!isVisible)}>
        Toggle
      </button>
      <AnimatePresence>
        {isVisible && (
          <motion.div
            initial={{ x: -100, opacity: 0 }}
            animate={{ x: 0, opacity: 1 }}
            exit={{ x: 100, opacity: 0 }}
            transition={{ type: "spring", stiffness: 100 }}
          >
            Slide content
          </motion.div>
        )}
      </AnimatePresence>
    </div>
  );
}

性能优化注意事项

使用 will-change CSS 属性提示浏览器优化层创建:

.animated-element {
  will-change: transform, opacity;
}

对于列表动画,为每个元素分配唯一 key 属性帮助 React 正确识别节点。避免在动画期间触发组件重渲染,可通过 React.memouseMemo 优化。

react实现出场动画

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

相关文章

react 如何执行

react 如何执行

安装 React 确保 Node.js 安装在本地环境中。通过以下命令创建新的 React 项目: npx create-react-app my-app 进入项目目录并启动开发服务器:…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impo…

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyfra…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态…