refactor: loading update

This commit is contained in:
xiaoxian521 2021-04-03 14:20:43 +08:00
parent 637808f88b
commit f3d206da43

View File

@ -13,246 +13,131 @@
window.process = {} window.process = {}
</script> </script>
</head> </head>
<body> <body>
<div id="app"> <div id="app">
<style> <style>
html, .app-loading {
body, display: flex;
#app {
height: 100%;
margin: 0px;
padding: 0px;
}
.chromeframe {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
#loader-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: 999999; justify-content: center;
align-items: center;
flex-direction: column;
background: #f4f7f9;
} }
#loader { .app-loading .app-loading-wrap {
display: block; position: absolute;
position: relative;
left: 50%;
top: 50%; top: 50%;
width: 150px; left: 50%;
height: 150px; display: flex;
margin: -75px 0 0 -75px; -webkit-transform: translate3d(-50%, -50%, 0);
border-radius: 50%; transform: translate3d(-50%, -50%, 0);
border: 3px solid transparent; justify-content: center;
/* COLOR 1 */ align-items: center;
border-top-color: #FFF; flex-direction: column;
-webkit-animation: spin 1s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-ms-animation: spin 1s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-moz-animation: spin 1s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-o-animation: spin 1s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
animation: spin 1s linear infinite;
/* Chrome, Firefox 16+, IE 10+, Opera */
z-index: 1001;
} }
#loader:before { .app-loading .dots {
content: ""; display: flex;
padding: 98px;
justify-content: center;
align-items: center;
}
.app-loading .app-loading-title {
display: flex;
margin-top: 30px;
font-size: 30px;
color: rgba(0, 0, 0, 0.85);
justify-content: center;
align-items: center;
}
.dot {
position: relative;
display: inline-block;
width: 48px;
height: 48px;
margin-top: 30px;
font-size: 32px;
transform: rotate(45deg);
box-sizing: border-box;
animation: antRotate 1.2s infinite linear;
}
.dot i {
position: absolute; position: absolute;
top: 5px; display: block;
left: 5px; width: 20px;
right: 5px; height: 20px;
bottom: 5px; background-color: #0065cc;
border-radius: 50%; border-radius: 100%;
border: 3px solid transparent; opacity: 0.3;
/* COLOR 2 */ transform: scale(0.75);
border-top-color: #FFF; animation: antSpinMove 1s infinite linear alternate;
-webkit-animation: spin 1s linear infinite; transform-origin: 50% 50%;
/* Chrome, Opera 15+, Safari 5+ */
-moz-animation: spin 1s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-o-animation: spin 1s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-ms-animation: spin 1s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
animation: spin 1s linear infinite;
/* Chrome, Firefox 16+, IE 10+, Opera */
} }
#loader:after { .dot i:nth-child(1) {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
/* COLOR 3 */
-moz-animation: spin 1.5s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-o-animation: spin 1.5s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-ms-animation: spin 1.5s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-webkit-animation: spin 1.5s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
animation: spin 1.5s linear infinite;
/* Chrome, Firefox 16+, IE 10+, Opera */
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(0deg);
/* IE 9 */
transform: rotate(0deg);
/* Firefox 16+, IE 10+, Opera */
}
100% {
-webkit-transform: rotate(360deg);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(360deg);
/* IE 9 */
transform: rotate(360deg);
/* Firefox 16+, IE 10+, Opera */
}
}
@keyframes spin {
0% {
-webkit-transform: rotate(0deg);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(0deg);
/* IE 9 */
transform: rotate(0deg);
/* Firefox 16+, IE 10+, Opera */
}
100% {
-webkit-transform: rotate(360deg);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(360deg);
/* IE 9 */
transform: rotate(360deg);
/* Firefox 16+, IE 10+, Opera */
}
}
#loader-wrapper .loader-section {
position: fixed;
top: 0; top: 0;
width: 51%;
height: 100%;
background: #5d94f8;
/* Old browsers */
z-index: 1000;
-webkit-transform: translateX(0);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: translateX(0);
/* IE 9 */
transform: translateX(0);
/* Firefox 16+, IE 10+, Opera */
}
#loader-wrapper .loader-section.section-left {
left: 0; left: 0;
} }
#loader-wrapper .loader-section.section-right { .dot i:nth-child(2) {
top: 0;
right: 0; right: 0;
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
} }
/* Loaded */ .dot i:nth-child(3) {
.loaded #loader-wrapper .loader-section.section-left { right: 0;
-webkit-transform: translateX(-100%); bottom: 0;
/* Chrome, Opera 15+, Safari 3.1+ */ -webkit-animation-delay: 0.8s;
-ms-transform: translateX(-100%); animation-delay: 0.8s;
/* IE 9 */
transform: translateX(-100%);
/* Firefox 16+, IE 10+, Opera */
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
} }
.loaded #loader-wrapper .loader-section.section-right { .dot i:nth-child(4) {
-webkit-transform: translateX(100%); bottom: 0;
/* Chrome, Opera 15+, Safari 3.1+ */ left: 0;
-ms-transform: translateX(100%); -webkit-animation-delay: 1.2s;
/* IE 9 */ animation-delay: 1.2s;
transform: translateX(100%);
/* Firefox 16+, IE 10+, Opera */
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
} }
.loaded #loader { @keyframes antRotate {
opacity: 0; to {
-webkit-transition: all 0.3s ease-out; -webkit-transform: rotate(405deg);
transition: all 0.3s ease-out; transform: rotate(405deg);
}
} }
.loaded #loader-wrapper { @-webkit-keyframes antRotate {
visibility: hidden; to {
-webkit-transform: translateY(-100%); -webkit-transform: rotate(405deg);
/* Chrome, Opera 15+, Safari 3.1+ */ transform: rotate(405deg);
-ms-transform: translateY(-100%); }
/* IE 9 */
transform: translateY(-100%);
/* Firefox 16+, IE 10+, Opera */
-webkit-transition: all 0.3s 1s ease-out;
transition: all 0.3s 1s ease-out;
} }
/* JavaScript Turned Off */ @keyframes antSpinMove {
.no-js #loader-wrapper { to {
display: none;
}
.no-js h1 {
color: #222222;
}
#loader-wrapper .load_title {
font-family: 'Open Sans';
color: #FFF;
font-size: 19px;
width: 100%;
text-align: center;
z-index: 9999999999999;
position: absolute;
top: 60%;
opacity: 1; opacity: 1;
line-height: 30px; }
} }
#loader-wrapper .load_title span { @-webkit-keyframes antSpinMove {
font-weight: normal; to {
font-style: italic; opacity: 1;
font-size: 13px; }
color: #FFF;
opacity: 0.5;
} }
</style> </style>
<div id="loader-wrapper"> <div class="app-loading">
<div id="loader"></div> <div class="app-loading-wrap">
<div class="loader-section section-left"></div> <div class="app-loading-dots">
<div class="loader-section section-right"></div> <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
<div class="load_title">加载中,请耐心等待... </div>
<br> <div class="app-loading-title">vue-pure-admin</div>
<span id="version">V0.0.1</span>
</div> </div>
</div> </div>
</div> </div>