<! DOCTYPE html >
< html lang = " en" > < head> < meta charset = " UTF-8" /> < meta name = " viewport" content = " width=device-width, initial-scale=1.0" /> < title> 加载效果</ title> < link rel = " stylesheet" href = " ./style.css" /> </ head> < body> < div class = " bouncing-loader" > < div class = " bouncing-loader-item" > </ div> < div class = " bouncing-loader-item" > </ div> < div class = " bouncing-loader-item" > </ div> </ div> < div class = " spin-loading" > < div class = " loading" > </ div> </ div> < span class = " dot" > 正在加载中< span class = " dotted" > </ span> </ span> </ body>
</ html>
* { margin : 0; padding : 0; box-sizing : border-box;
} html,
body { display : flex;
}
.bouncing-loader,
.spin-loading,
.dot { display : flex; justify-content : center; align-items : center; width : 150px; border : 1px solid #efefef; margin : 3rem;
}
.bouncing-loader-item { width : 16px; height : 16px; margin : 3rem 0.2rem; background-color : #0b16f1; border-radius : 50%; animation : bouncingLoader 0.6s infinite alternate;
}
.bouncing-loader-item:nth-child(2) { animation-delay : 0.2s;
}
.bouncing-loader-item:nth-child(3) { animation-delay : 0.4s;
}
@keyframes bouncingLoader { to { opacity : 0.1; transform : translate3d ( 0, -10px, 0) ; }
}
.spin-loading .loading { width : 100%; aspect-ratio : 1; border-radius : 100%; background-image : conic-gradient ( #0b16f1, 30%, #fff) ; -webkit-mask-image : radial-gradient ( closest-side, transparent 80%, black 80%) ; animation : spin 1s linear infinite reverse;
} @keyframes spin { from { transform : rotate ( 0deg) ; } to { transform : rotate ( 360deg) ; }
}
.dotted { display : inline-block; width : 20px;
}
.dotted::after { content : '' ; animation : dotted 2s infinite;
}
@keyframes dotted { 0% { content : '...' ; } 25% { content : '' ; } 50% { content : '.' ; } 75% { content : '..' ; } 100% { content : '...' ; }
}