当前位置:首页 > 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 />;
}

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

相关文章

h5实现网页跳转

h5实现网页跳转

H5实现网页跳转的方法 在HTML5中,可以通过多种方式实现网页跳转。以下是几种常见的方法: 使用<a>标签 通过超链接标签实现跳转是最传统的方式: <a href="http…

vue 实现异步加载

vue 实现异步加载

Vue 异步加载的实现方法 动态导入组件(懒加载) 使用 import() 语法动态导入组件,Vue 会将其转换为异步加载的组件。适用于路由或组件按需加载。 const AsyncComponent…

用css制作淘宝网页

用css制作淘宝网页

页面布局设计 淘宝网页通常采用响应式布局,确保在不同设备上都能良好显示。主要结构包括顶部导航栏、搜索栏、轮播图、商品分类展示和页脚。 使用CSS的Flexbox或Grid布局可以快速实现这些结构。F…

网页登录实现vue

网页登录实现vue

使用 Vue 实现网页登录功能 创建 Vue 项目 使用 Vue CLI 初始化项目,运行命令 vue create login-demo 选择默认配置或手动配置项目。 安装必要依赖如 axios…

vue动态加载实现

vue动态加载实现

Vue动态加载实现方法 动态加载在Vue中通常指按需加载组件或资源,以下是几种常见实现方式: 使用异步组件 通过defineAsyncComponent或动态import()语法实现组件按需加载:…

vue实现加载动画

vue实现加载动画

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