当前位置:首页 > 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 为例:

安装依赖:

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 可以创建更复杂的加载动画:

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 示例:

react实现网页加载动画

import { Spin } from 'antd';

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

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

相关文章

vue2实现图片懒加载

vue2实现图片懒加载

实现图片懒加载的方法 在Vue2中实现图片懒加载可以通过以下方法完成,核心原理是监听图片是否进入可视区域,再动态加载图片资源。 使用IntersectionObserver API Intersec…

jquery加载页面

jquery加载页面

jQuery 加载页面内容的方法 使用 .load() 方法 通过 AJAX 请求加载远程数据并插入到指定元素中。适用于加载部分页面片段。 $("#targetElement").load("ext…

jquery页面加载

jquery页面加载

jQuery 页面加载事件 在 jQuery 中,页面加载事件通常通过 $(document).ready() 或简写的 $() 来实现。这种方式确保代码在 DOM 完全加载后执行,但无需等待图片等资…

vue实现触底加载

vue实现触底加载

触底加载的实现方法 在Vue中实现触底加载功能,可以通过监听滚动事件或使用Intersection Observer API来实现。以下是两种常见的方法: 监听滚动事件 在组件中监听滚动事件,计算…

js实现图片加载

js实现图片加载

使用Image对象加载图片 通过JavaScript的Image对象可以动态加载图片,适用于需要预加载或动态插入图片的场景。 const img = new Image(); img.src =…

js实现图片的懒加载

js实现图片的懒加载

实现图片懒加载的基本原理 懒加载的核心思想是延迟加载非视口内的图片,当用户滚动页面时再动态加载即将进入视口的图片资源。这能显著减少页面初始加载时的网络请求和带宽消耗。 Intersection Ob…