React实现加载效果(用css)

直接上代码,其实我也是学习的别人的,基本没咋改,我就记记,原文章链接为:

css实现叶子形状loading效果

代码结构:

 

// App.js
import "./styles.css";

export default function App() {
  return (
    <div className="App">
      <div id="loading">
        <div className="color1"></div>
        <div className="color1"></div>
        <div className="color1"></div>
        <div className="color1"></div>
        <div className="color1"></div>
        <div className="color2"></div>
        <div className="color2"></div>
        <div className="color2"></div>
        <div className="color2"></div>
        <div className="color2"></div>
      </div>
    </div>
  );
}
// index.js
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";

import App from "./App";

const rootElement = document.getElementById("root");
const root = createRoot(rootElement);

root.render(
  <StrictMode>
    <App />
  </StrictMode>
);
// style.css
.App {
  font-family: sans-serif;
  text-align: center;
}
body {
  background-color: #000;
}
.color1 {
  background: #fde515;
}
.color2 {
  background: #00def2;
}

@-webkit-keyframes loadRotate {
  from {
    -webkit-transform: rotateZ(0deg);
  }
  to {
    -webkit-transform: rotateZ(360deg);
  }
}
@keyframes loadRotate {
  from {
    transform: rotateZ(0deg);
  }
  to {
    transform: rotateZ(360deg);
  }
}
#loading {
  width: 100px;
  height: 100px;
  position: absolute;
  left: 50%;
  top: 50%;
  margin-left: -50px;
  margin-top: -50px;
  animation: loadRotate 2s linear infinite;
  animation-fill-mode: both;
}
#loading div {
  width: 20px;
  height: 30px;
  position: absolute;
  left: 40px;
  top: 35px;
  transform: rotateZ(0) translateX(60px);
  opacity: 1;
  border-radius: 50% 0;
}
#loading div:nth-child(2) {
  transform: rotateZ(36deg) translateX(60px);
  opacity: 0.8;
}
#loading div:nth-child(3) {
  transform: rotateZ(72deg) translateX(60px);
  opacity: 0.6;
}
#loading div:nth-child(4) {
  transform: rotateZ(108deg) translateX(60px);
  opacity: 0.4;
}
#loading div:nth-child(5) {
  transform: rotateZ(144deg) translateX(60px);
  opacity: 0.2;
}

#loading div:nth-child(6) {
  transform: rotateZ(180deg) translateX(60px);
  opacity: 1;
}
#loading div:nth-child(7) {
  transform: rotateZ(216deg) translateX(60px);
  opacity: 0.8;
}
#loading div:nth-child(8) {
  transform: rotateZ(252deg) translateX(60px);
  opacity: 0.6;
}
#loading div:nth-child(9) {
  transform: rotateZ(288deg) translateX(60px);
  opacity: 0.4;
}
#loading div:nth-child(10) {
  transform: rotateZ(324deg) translateX(60px);
  opacity: 0.2;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值