@keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(359deg); } } @keyframes spin { 0% { transform: rotate(0deg); } to { transform: rotate(1turn); } } .is-spin { animation: spin 2s linear infinite; } .#{$ns}Spinner-overlay { position: absolute; z-index: 10; top: 0; left: 0; right: 0; bottom: 0; background: $Spinner-overlay-bg; transition: ease-out opacity 0.3s; opacity: 0; &.in { opacity: 1; } } .#{$ns}Spinner { width: $Spinner-width; height: $Spinner-height; transform: translateZ(0); display: inline-block; background: $Spinner-bg; background-size: 100%; &--lg { width: $Spinner--lg-width; height: $Spinner--lg-height; } &--sm { width: $Spinner--sm-width; height: $Spinner--sm-height; } transition: ease-out all 0.3s; &--icon { background: transparent; animation: spin 2s linear infinite; width: auto; height: auto; } } // 当启用 overlay 的时候,应该是居中模式。 .#{$ns}Spinner--overlay { position: absolute; z-index: 11; top: 50%; left: 50%; transform: translate3d(-50%, -50%, 0); } .#{$ns}Spinner--overlay.#{$ns}Spinner--lg { width: $Spinner--lg-width; height: $Spinner--lg-height; line-height: $Spinner--lg-height; } @include media-breakpoint-up(md) { .#{$ns}Layout .#{$ns}Page-body > .#{$ns}Spinner-overlay { left: $Layout-aside-width; } .#{$ns}Layout--folded .#{$ns}Page-body > .#{$ns}Spinner-overlay { left: $Layout-aside--folded-width; } }