refactor: ♻️ 加载动画替换

This commit is contained in:
hxr
2024-03-03 14:00:24 +08:00
parent 7d97c169e1
commit 8456f1f26d

View File

@@ -6,30 +6,21 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta <meta
name="description" name="description"
content="Vue3 + Vite4 + TypeScript5 + Element-Plus 的后台管理模板配套接口文档和后端源码vue-element-admin 的 Vue3 版本" content="Vue3 + Vite5 + TypeScript5 + Element-Plus 的后台管理模板配套接口文档和后端源码vue-element-admin 的 Vue3 版本"
/>
<meta
name="keywords"
content="vue,element-plus,typescript,vue-element-admin,vue3-element-admin"
/> />
<meta name="keywords" content="vue-element-admin,vue3-element-admin" />
<title>vue3-element-admin</title> <title>vue3-element-admin</title>
</head> </head>
<body> <body>
<div id="app" class="app"> <div id="app">
<!--加载动画--> <div class="loader"></div>
<div class="mesh-loader">
<div class="set-one">
<div class="circle"></div>
<div class="circle"></div>
</div>
<div class="set-two">
<div class="circle"></div>
<div class="circle"></div>
</div>
</div>
</div> </div>
</body>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>
<script>
global = globalThis;
</script>
<style> <style>
html, html,
@@ -43,79 +34,63 @@
height: 100%; height: 100%;
} }
.mesh-loader { .loader {
width: 100%; position: relative;
height: 100%; width: 50px;
overflow: hidden; aspect-ratio: 1.154;
background: conic-gradient(
from 120deg at 50% 64%,
#0000,
#25b09b 1deg 120deg,
#0000 121deg
);
animation: l27-0 1.5s infinite cubic-bezier(0.3, 1, 0, 1);
} }
.mesh-loader .circle { .loader::before,
.loader::after {
position: absolute; position: absolute;
width: 25px; inset: 0;
height: 25px; content: "";
margin: -12.5px; background: inherit;
background: #03a9f4; transform-origin: 50% 66%;
border-radius: 50%; animation: l27-1 1.5s infinite;
animation: mesh 3s ease-in-out infinite -1.5s;
} }
.mesh-loader > div .circle:last-child { .loader::after {
animation-delay: 0s; --s: -1;
} }
.mesh-loader > div { @keyframes l27-0 {
position: absolute; 0%,
top: 50%; 30% {
left: 50%;
}
.mesh-loader > div:last-child {
transform: rotate(90deg);
}
@keyframes mesh {
0% {
transform: rotate(0); transform: rotate(0);
transform-origin: 50% -100%;
} }
50% { 70% {
transform: rotate(120deg);
}
70.01%,
100% {
transform: rotate(360deg); transform: rotate(360deg);
transform-origin: 50% -100%; }
} }
50.00001% { @keyframes l27-1 {
transform: rotate(0deg); 0% {
transform-origin: 50% 200%; transform: rotate(calc(var(--s, 1) * 120deg)) translate(0);
}
30%,
70% {
transform: rotate(calc(var(--s, 1) * 120deg))
translate(calc(var(--s, 1) * -5px), 10px);
} }
100% { 100% {
transform: rotate(360deg); transform: rotate(calc(var(--s, 1) * 120deg)) translate(0);
transform-origin: 50% 200%;
}
}
@keyframes mesh {
0% {
transform: rotate(0);
transform-origin: 50% -100%;
}
50% {
transform: rotate(360deg);
transform-origin: 50% -100%;
}
50.00001% {
transform: rotate(0deg);
transform-origin: 50% 200%;
}
100% {
transform: rotate(360deg);
transform-origin: 50% 200%;
} }
} }
</style> </style>
</body>
</html> </html>