当前位置:首页 > React

react实现网页加载动画

2026-01-27 18:28:59React

使用 CSS 动画实现加载动画

在 React 中可以通过 CSS 动画实现简单的加载效果。创建一个独立的 CSS 文件定义动画关键帧,然后在组件中应用。

CSS 动画示例:

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.loader {
  border: 4px solid #f3f3f3;
  border-top: 4px solid #3498db;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  animation: spin 2s linear infinite;
}

React 组件实现:

import './Loader.css';

function Loader() {
  return <div className="loader"></div>;
}

使用 React 动画库

react-transition-group 或 framer-motion 等库可以提供更复杂的动画效果。以 framer-motion 为例:

安装依赖:

react实现网页加载动画

npm install framer-motion

组件实现:

import { motion } from "framer-motion";

function Loader() {
  return (
    <motion.div
      animate={{
        rotate: 360,
      }}
      transition={{
        duration: 2,
        repeat: Infinity,
        ease: "linear"
      }}
      style={{
        width: 40,
        height: 40,
        background: "linear-gradient(to right, #3498db, #f3f3f3)",
        borderRadius: "50%"
      }}
    />
  );
}

条件渲染加载动画

实际应用中通常需要根据加载状态显示/隐藏动画:

function App() {
  const [isLoading, setIsLoading] = useState(true);

  useEffect(() => {
    const timer = setTimeout(() => setIsLoading(false), 3000);
    return () => clearTimeout(timer);
  }, []);

  return (
    <div>
      {isLoading ? <Loader /> : <MainContent />}
    </div>
  );
}

SVG 动画实现

使用 SVG 可以创建更复杂的加载动画:

react实现网页加载动画

function SvgLoader() {
  return (
    <svg width="40" height="40" viewBox="0 0 40 40">
      <circle
        cx="20"
        cy="20"
        r="18"
        stroke="#3498db"
        strokeWidth="4"
        fill="none"
        strokeDasharray="80 20"
      >
        <animateTransform
          attributeName="transform"
          type="rotate"
          from="0 20 20"
          to="360 20 20"
          dur="1.5s"
          repeatCount="indefinite"
        />
      </circle>
    </svg>
  );
}

第三方组件库解决方案

使用现成的 UI 组件库可以快速集成加载动画:

Material-UI 示例:

import CircularProgress from '@mui/material/CircularProgress';

function MuiLoader() {
  return <CircularProgress />;
}

Ant Design 示例:

import { Spin } from 'antd';

function AntLoader() {
  return <Spin />;
}

标签: 加载网页
分享给朋友:

相关文章

vue网页无法实现

vue网页无法实现

常见原因分析 网络连接问题 检查网络是否正常,确保能访问外部资源。如果是本地开发环境,确认代理配置是否正确,避免因网络问题导致资源加载失败。 依赖未正确安装 运行npm install或yarn…

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式实现,具体选择取决于项目需求和路由管理方式。 使用 Vue Router 实现单页应用(SPA)切换 Vue Route…

vue实现加载

vue实现加载

Vue 实现加载功能的方法 使用 v-if 或 v-show 控制加载状态 在模板中通过 v-if 或 v-show 控制加载动画的显示与隐藏。v-if 会完全移除 DOM 元素,而 v-show 仅…

jquery加载

jquery加载

jQuery 加载方法 使用 CDN 加载 jQuery 推荐通过公共 CDN(如 Google、Microsoft 或 jQuery 官方)加载,速度快且可能已被浏览器缓存。 <scr…

jquery 加载

jquery 加载

jQuery 加载方法 使用jQuery需要先将其库文件加载到网页中。以下是几种常见的加载方式: 通过CDN加载 推荐使用官方或公共CDN(内容分发网络)加载jQuery,速度快且可能被浏览器缓存…

加载jquery

加载jquery

加载 jQuery 的方法 通过 CDN 加载 推荐使用官方或公共 CDN(内容分发网络)加载 jQuery,速度快且稳定。将以下代码添加到 HTML 文件的 <head> 或 <b…