Loading
这里收集了将近200种的loading效果,篇幅有限,代码自取:gitee.com/li_ya_xu/te…
<div>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
div {
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: space-between;
width: 2em;
}
span {
width: 0.3em;
height: 1em;
background-color: #3cefff;
}
span:nth-of-type(1) {
animation: grow 1s -0.45s ease-in-out infinite;
}
span:nth-of-type(2) {
animation: grow 1s -0.3s ease-in-out infinite;
}
span:nth-of-type(3) {
animation: grow 1s -0.15s ease-in-out infinite;
}
span:nth-of-type(4) {
animation: grow 1s ease-in-out infinite;
}
@keyframes grow {
0%,
100% {
transform: scaleY(1);
}
50% {
transform: scaleY(2);
}
}
<div></div>
div {
position: relative;
width: 2em;
height: 2em;
border: 3px solid #3cefff;
overflow: hidden;
animation: spin 3s ease infinite;
}
div::before {
content: '';
position: absolute;
top: -3px;
left: -3px;
width: 2em;
height: 2em;
background-color: hsla(185, 100%, 62%, 0.75);
transform-origin: center bottom;
transform: scaleY(1);
animation: fill 3s linear infinite;
}
@keyframes spin {
50%,
100% {
transform: rotate(360deg);
}
}
@keyframes fill {
25%,
50% {
transform: scaleY(0);
}
100% {
transform: scaleY(1);
}
}
<div class="box">
<div class="coin"></div>
</div>
.box {
perspective: 120px;
}
.coin {
width: 2em;
height: 2em;
border-radius: 50%;
border: 4px solid #3cefff;
animation: spin 1.5s ease-in-out infinite;
}
@keyframes spin {
to {
transform: rotateY(540deg);
}
}
<div class="balls">
<div></div>
<div></div>
<div></div>
</div>
.balls {
width: 4em;
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: space-between;
}
.balls div {
width: 0.8em;
height: 0.8em;
border-radius: 50%;
background-color: #fc2f70;
}
.balls div:nth-of-type(1) {
transform: translateX(-100%);
animation: left-swing 0.5s ease-in alternate infinite;
}
.balls div:nth-of-type(3) {
transform: translateX(-95%);
animation: right-swing 0.5s ease-out alternate infinite;
}
@keyframes left-swing {
50%,
100% {
transform: translateX(95%);
}
}
@keyframes right-swing {
50% {
transform: translateX(-95%);
}
100% {
transform: translateX(100%);
}
}
<div></div>
div {
width: 2.5em;
height: 3em;
border: 3px solid transparent;
border-top-color: #fc2f70;
border-bottom-color: #fc2f70;
border-radius: 50%;
animation: spin-stretch 2s ease infinite;
}
@keyframes spin-stretch {
50% {
transform: rotate(360deg) scale(0.4, 0.33);
border-width: 8px;
}
100% {
transform: rotate(720deg) scale(1, 1);
border-width: 3px;
}
}
<div class="dots">
<div></div>
<div></div>
<div></div>
</div>
.dots {
width: 3.5em;
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: space-between;
}
.dots div {
width: 0.8em;
height: 0.8em;
border-radius: 50%;
background-color: #fc2f70;
animation: fade 0.8s ease-in-out alternate infinite;
}
.dots div:nth-of-type(1) {
animation-delay: -0.4s;
}
.dots div:nth-of-type(2) {
animation-delay: -0.2s;
}
@keyframes fade {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
<div class="box">
<div class="plane"></div>
</div>
.box {
perspective: 120px;
}
.plane {
width: 2em;
height: 2em;
background-color: #fc2f70;
transform: rotate(0);
animation: flip 1s infinite;
}
@keyframes flip {
50% {
transform: rotateY(180deg);
}
100% {
transform: rotateY(180deg) rotateX(180deg);
}
}
<div class="dots">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
.dots {
width: 3em;
height: 3em;
display: grid;
grid-template-rows: repeat(3, 1fr);
grid-template-columns: repeat(3, 1fr);
justify-items: center;
align-items: center;
}
.dots > div {
width: 0.5em;
height: 0.5em;
background-color: #3cefff;
border-radius: 50%;
animation: fade 1.5s alternate ease-in-out infinite;
}
.dots > div:nth-of-type(2),
.dots > div:nth-of-type(4) {
animation-delay: 0.25s;
}
.dots > div:nth-of-type(3),
.dots > div:nth-of-type(5),
.dots > div:nth-of-type(7) {
animation-delay: 0.5s;
}
.dots > div:nth-of-type(6),
.dots > div:nth-of-type(8) {
animation-delay: 0.75s;
}
.dots > div:nth-of-type(9) {
animation-delay: 1s;
}
@keyframes fade {
to {
opacity: 0.2;
}
}
<div class="loader">
<div class="outer"></div>
<div class="middle"></div>
<div class="inner"></div>
</div>
.loader {
position: relative;
}
.outer,
.middle,
.inner {
border: 3px solid transparent;
border-top-color: #3cefff;
border-right-color: #3cefff;
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
}
.outer {
width: 3.5em;
height: 3.5em;
margin-left: -1.75em;
margin-top: -1.75em;
animation: spin 2s linear infinite;
}
.middle {
width: 2.1em;
height: 2.1em;
margin-left: -1.05em;
margin-top: -1.05em;
animation: spin 1.75s linear reverse infinite;
}
.inner {
width: 0.8em;
height: 0.8em;
margin-left: -0.4em;
margin-top: -0.4em;
animation: spin 1.5s linear infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
<div></div>
div {
display: flex;
width: 3.5em;
height: 3.5em;
border: 3px solid transparent;
border-top-color: #3cefff;
border-bottom-color: #3cefff;
border-radius: 50%;
animation: spin 1.5s linear infinite;
}
div:before {
content: '';
display: block;
margin: auto;
width: 0.75em;
height: 0.75em;
border: 3px solid #3cefff;
border-radius: 50%;
animation: pulse 1s alternate ease-in-out infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
@keyframes pulse {
from {
transform: scale(0.5);
}
to {
transform: scale(1);
}
}
<svg viewBox="0 0 50 50">
<circle class="ring" cx="25" cy="25" r="20"></circle>
<circle class="ball" cx="25" cy="5" r="3.5"></circle>
</svg>
svg {
width: 3.75em;
animation: 1.5s spin ease infinite;
}
.ring {
fill: none;
stroke: hsla(341, 97%, 59%, 0.3);
stroke-width: 2;
}
.ball {
fill: #fc2f70;
stroke: none;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
<svg viewBox="25 25 50 50">
<circle cx="50" cy="50" r="20"></circle>
</svg>
svg {
width: 3.75em;
transform-origin: center;
animation: rotate 2s linear infinite;
}
circle {
fill: none;
stroke: #fc2f70;
stroke-width: 2;
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
stroke-linecap: round;
animation: dash 1.5s ease-in-out infinite;
}
@keyframes rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes dash {
0% {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 90, 200;
stroke-dashoffset: -35px;
}
100% {
stroke-dashoffset: -125px;
}
}
<div></div>
div {
border: 3px solid hsla(185, 100%, 62%, 0.2);
border-top-color: #3cefff;
border-radius: 50%;
width: 3em;
height: 3em;
animation: spin 1s linear infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
<div class="balls">
<div></div>
<div></div>
<div></div>
</div>
.balls {
width: 3.5em;
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: space-between;
}
.balls div {
width: 0.8em;
height: 0.8em;
border-radius: 50%;
background-color: #fc2f70;
transform: translateY(-100%);
animation: wave 0.8s ease-in-out alternate infinite;
}
.balls div:nth-of-type(1) {
animation-delay: -0.4s;
}
.balls div:nth-of-type(2) {
animation-delay: -0.2s;
}
@keyframes wave {
from {
transform: translateY(-100%);
}
to {
transform: translateY(100%);
}
}
<span class="loader-1"> </span>
.loader-1 {
width: 48px;
height: 48px;
border: 5px solid #FFF;
border-bottom-color: #FF3D00;
border-radius: 50%;
display: inline-block;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-2"> </span>
.loader-2 {
width: 48px;
height: 48px;
border: 3px solid #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-2:after {
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 40px;
height: 40px;
border-radius: 50%;
border: 3px solid transparent;
border-bottom-color: #FF3D00;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-3"> </span>
.loader-3 {
width: 48px;
height: 48px;
border: 3px solid #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-3:after {
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 56px;
height: 56px;
border-radius: 50%;
border: 3px solid transparent;
border-bottom-color: #FF3D00;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-4"> </span>
.loader-4 {
width: 48px;
height: 48px;
border: 3px solid #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-4:after {
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 40px;
height: 40px;
border-radius: 50%;
border: 3px solid;
border-color: #FF3D00 transparent;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-5"> </span>
.loader-5 {
width: 48px;
height: 48px;
border: 3px solid #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-5:after {
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 56px;
height: 56px;
border-radius: 50%;
border: 3px solid;
border-color: #FF3D00 transparent;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-6"> </span>
.loader-6 {
width: 48px;
height: 48px;
border: 2px solid #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-6:after, .loader-6:before {
content: "";
position: absolute;
left: 0;
top: 0;
background: #FF3D00;
width: 6px;
height: 6px;
transform: translate(150%, 150%);
border-radius: 50%;
}
.loader-6:before {
left: auto;
top: auto;
right: 0;
bottom: 0;
transform: translate(-150%, -150%);
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-7"> </span>
.loader-7 {
width: 48px;
height: 48px;
border: 2px solid #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-7:after, .loader-7:before {
content: "";
position: absolute;
left: 0;
top: 0;
background: #FF3D00;
width: 6px;
height: 6px;
border-radius: 50%;
}
.loader-7:before {
left: auto;
top: auto;
right: 0;
bottom: 0;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-8"> </span>
.loader-8 {
width: 48px;
height: 48px;
border: 3px solid #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-8:after {
content: "";
position: absolute;
left: 0;
top: 0;
background: #FF3D00;
width: 16px;
height: 16px;
transform: translate(-50%, 50%);
border-radius: 50%;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-9"> </span>
.loader-9 {
width: 48px;
height: 48px;
border-radius: 50%;
display: inline-block;
position: relative;
border: 2px solid #FF3D00;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-9:after {
content: "";
position: absolute;
left: 4px;
top: 4px;
border: 2px solid #FFF;
width: 12px;
height: 12px;
border-radius: 50%;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-10"> </span>
.loader-10 {
width: 48px;
height: 48px;
border-radius: 50%;
display: inline-block;
position: relative;
border: 3px solid;
border-color: #FFF #FFF transparent;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-10:after {
content: "";
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
border: 3px solid;
border-color: transparent #FF3D00 #FF3D00;
width: 24px;
height: 24px;
border-radius: 50%;
-webkit-animation: rotationBack 0.5s linear infinite;
animation: rotationBack 0.5s linear infinite;
transform-origin: center center;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes rotationBack {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(-360deg);
}
}
<span class="loader-13"> </span>
.loader-13 {
width: 48px;
height: 48px;
border: 2px solid #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-13:after {
content: "";
position: absolute;
left: 50%;
top: 0;
background: #FF3D00;
width: 3px;
height: 24px;
transform: translateX(-50%);
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-14"> </span>
.loader-14 {
width: 48px;
height: 48px;
display: inline-block;
position: relative;
}
.loader-14::after, .loader-14::before {
content: "";
width: 48px;
height: 48px;
border-radius: 50%;
border: 2px solid #FFF;
position: absolute;
left: 0;
top: 0;
-webkit-animation: animloader14 2s linear infinite;
animation: animloader14 2s linear infinite;
}
.loader-14::after {
-webkit-animation-delay: 1s;
animation-delay: 1s;
}
@keyframes animloader14 {
0% {
transform: scale(0);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0;
}
}
<span class="loader-15"> </span>
.loader-15 {
width: 48px;
height: 48px;
border: 5px dotted #FFF;
border-radius: 50%;
display: inline-block;
position: relative;
-webkit-animation: rotation 2s linear infinite;
animation: rotation 2s linear infinite;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-16"> </span>
.loader-16 {
width: 48px;
height: 48px;
border-radius: 50%;
display: inline-block;
position: relative;
background: linear-gradient(0deg, rgba(255, 61, 0, 0.2) 33%, #ff3d00 100%);
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-16:after {
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 44px;
height: 44px;
border-radius: 50%;
background: #263238;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-17"> </span>
.loader-17 {
width: 48px;
height: 48px;
border-radius: 50%;
display: inline-block;
border-top: 3px solid #FFF;
border-right: 3px solid transparent;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-18"> </span>
.loader-18 {
width: 48px;
height: 48px;
border-radius: 50%;
display: inline-block;
border-top: 4px solid #FFF;
border-right: 4px solid transparent;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-18:after {
content: "";
position: absolute;
left: 0;
top: 0;
width: 48px;
height: 48px;
border-radius: 50%;
border-bottom: 4px solid #FF3D00;
border-left: 4px solid transparent;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-19"> </span>
.loader-19 {
width: 48px;
height: 48px;
border-radius: 50%;
display: inline-block;
border-top: 4px solid #FFF;
border-right: 4px solid transparent;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
.loader-19:after {
content: "";
position: absolute;
left: 0;
top: 0;
width: 48px;
height: 48px;
border-radius: 50%;
border-left: 4px solid #FF3D00;
border-bottom: 4px solid transparent;
animation: rotation 0.5s linear infinite reverse;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<span class="loader-20"> </span>
.loader-20 {
width: 48px;
height: 48px;
border: 5px solid;
border-color: #FF3D00 transparent;
border-radius: 50%;
display: inline-block;
-webkit-animation: rotation 1s linear infinite;
animation: rotation 1s linear infinite;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
篇幅有限~~~~~~,代码自取:gitee.com/li_ya_xu/te…